我剛剛問了一個關於將大於2 MB的.PDF文件上傳到BLOBS的MySQL數據庫的問題。我不得不改變我的php.ini文件和MySQLs最大數據包設置中的一些設置。然而,解決這個問題導致我發現了一個新的問題與我的腳本。BLOB下載截斷爲1 MB腳本對於小於1 MB的文件起作用
現在,因爲我可以上傳文件到我的BLOB數據庫,所以我試圖下載該文件用於測試目的。當我打開.PDF文件時,非常沮喪,我收到以下錯誤:無法加載文檔(錯誤3)'file:///tmp/test-13.pdf'。經過進一步的調查,我發現正在下載的文件test.pdf只有1 MB,稍微小於數據庫中超過2 MB的假定大小的一半。這顯然是錯誤的原因。
下面這段代碼是我用來從數據庫下載文件的腳本部分。它位於腳本的最頂端,完美適用於小於1 MB的文件。
foreach($_REQUEST as $key => $value)
{
if ($value == 'Open')
{
header();
session_start();
$dbh = new PDO('mysql:host='.$_SESSION['OpsDBServer'].'.ops.tns.its.psu.edu;
dbname='.$_SESSION['OpsDB'], $_SESSION['yoM'], $_SESSION['aMa']);
$id = $key;
$sqlDownload = "SELECT name, type, content, size FROM upload WHERE
id='".$id."'";
$result = $dbh->query($sqlDownload);
$download = $result->fetchAll();
$type = $download[0]['type'];
$size = $download[0]['size'];
$name = $download[0]['name'];
$content = $download[0]['content'];
header("Content-type: $type");
header("Content-Disposition: inline; filename=$name");
header("Content-length: $size");
header("Cache-Control: maxage=1");
header("Pragma: public");
echo $content;
exit;
}
}
我在想,也許我有一些頭部聲明錯誤?我很困惑該怎麼做。我已經通過php.ini進行了搜索,並且沒有發現我認爲需要更改的設置,並且我的MySQL的最大數據包設置爲4 MB,因此需要下載2 MB。
感謝您的任何幫助。
您是否仔細檢查了數據庫中* size *的設置是否正確? – 2009-10-16 19:55:24
我還沒有檢查過,但我會在星期一回去工作。 – dbaugh 2009-10-17 16:30:20