当我使用此代码下载此图像(仅用于测试目的)时,我打开下载的图像,它给我的全部错误。我试着用铬。用windows photo viewer打开它,它说它无法显示图片,因为它是空的??? 这是代码:
<?PHP
// Define the path to file
$file = 'http://www.media.lonelyplanet.com/lpi/12553/12553-11/469x264.jpg';
if(!file)
{
// File doesn't exist, output error
die('file not found');
}
else
{
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, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
答案 0 :(得分:4)
我有机会解决这个问题。你的问题是双重的。
首先,从网址中删除www.
。
其次,删除对filesize($file)
的调用,这会引发错误,因为PHP在下载文件之前不知道文件的大小。 (真的,只需删除整行)
删除这两件事,我成功了。
答案 1 :(得分:2)
将ob_clean()
替换为ob_end_clean()
您仍然在缓冲,因此没有任何图片内容进入浏览器。
答案 2 :(得分:1)
替换:
ob_clean();
flush();
readfile($file);
使用:
echo get_file_contents($file);
答案 3 :(得分:1)
如果您只想通过点击链接从第三方下载文件,则可以使用锚标记中的新属性下载。
代码看起来像
<a download href="path/to/the/download/file"> Clicking on this link will force download the file</a>
适用于firefox和chrome最新版本。我应该提一下我在IE中没有检查过吗? :P