Jag lagrar filer i blob-fält i en MySQL-databas och länkar till filerna enligt följande exempel:
download.php?id=1
download.php hämtar filen med det angivna id:t och skriver ut den filen med hjälp av följande kod:
$fileid = (int)$_GET['id'];
$res = query("SELECT * FROM fa_files WHERE groupid <> 2 AND fileid = $fileid");
if (mysql_num_rows($res)) {
$row = mysql_fetch_assoc($res);
header('Content-Type: '.$row['filetype']);
header('Content-length: '.$row['filesize']);
// Tvingar fram "spara som-dialogen"
header('Content-Disposition: attachment; filename='.$row['filename']);
header('Content-Description: PHP Generated Data');
echo $row['binaryfile'];
}
Problemet: när jag väljer att öppna en fil direkt, t.ex. en PDF, rapporterar Acrobat Reader att dokumentet inte kunde hittas. Öppnar jag en Word-fil rapporterar Word samma sak. Spara filen på disk kan jag göra, men alltså inte öppna dem direkt.
Vad kan vara orsaken till att Acrobat och Word inte hittar filerna? Har jag missat någon header kanske?
Problemet är att Word och Acrobat Internet Explorer IE hittas inte filerna om man väljer att öppna filerna direkt.
Pröva själv: http://wb0140.web02.ux.tyfon.net/files.php?category=12
