我已經獲得了關於使用PHP 我有以下代碼下載jpg和.avi文件從服務器問題:PHP下載.jpg或.AVI
$fileName = "Koala.jpg";
$filePath = "./Koala.jpg";
if (!file_exists($filePath)){
echo "No file";
return;
}
$fp = fopen($filePath, "r");
$fileSize = filesize($filePath);
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: $fileSize");
header("Content-Disposition: attachment;filename=".$fileName);
$buffer = 1024;
while(!feof($fp)){
$data = fread($fp, $fileSize);
echo $data;
}
fclose($fp);
代碼下載txt文件,併成功下載的文件可以被讀取。 但是,當涉及到.jpg時,無法讀取下載的.jpg文件。 任何人都可以伸出援手嗎?由於
剛纔想的另一種方法,它工作正常
$file = 'Koala.jpg';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
但只是不知道是什麼原因導致第一種方法失敗,即使使用的fopen(「XXX」,「RB」)來代替。謝謝
什麼是你的特定錯誤得到些什麼? – BenOfTheNorth 2012-07-25 10:07:22
該錯誤表示該文件可能已損壞。 – 2012-07-25 10:11:39
謝謝大家。問題可能是由於輸出緩衝區。在回顯數據之前添加ob_clean以擦除輸出緩衝區後,問題就解決了。 – 2012-07-25 13:33:04