带头的PHP图像下载

时间:2014-07-20 21:48:53

标签: php image-processing http-headers

我已经成功实施了一些PHP来下载图片:

PHP:

<?php

$image = "path/to/image.jpg"

header('Content-disposition: attachment; filename=image.jpg');
header('Content-type: image/jpeg');
readfile($image);

?>

以下是我已保存到服务器的示例图片:http://www.thenally.com/work/php-tests/header/files/herzog.jpg

如果我在浏览器中查看图像,然后右键单击以保存,它将作为我本地Windows框中的典型图像(即可在Windows照片查看器中查看)。当我使用上面的PHP脚本下载图像时,图像无法以相同的方式查看,尽管文件大小是准确的,我可以在Photoshop中打开它。我对图像编码/解码等知之甚少,但显然当我使用上述方法下载时文件会发生变化。

修改

Windows Photo Viewer错误如下: &#34; Windows照片查看器无法打开此图片,因为照片查看器不支持此文件格式,或者您没有最新的照片查看器更新&#34;。

我的日志文件中没有PHP错误,但这在我的Chrome控制台中出现: &#34;资源被解释为文档但使用MIME类型image / jpeg传输:&#34; http://thenally.com/work/php-tests/header/index.php&#34;。

2 个答案:

答案 0 :(得分:0)

试试这个 header('Content-Transfer-Encoding: binary');

答案 1 :(得分:0)

我遇到了类似的问题并设法通过删除PHP标记之间的任何空格/换行来修复它。

基本上必须这样做:

<?php
//stuff
?>
--REMOVE THIS SPACE--
<?php
//stuff
?>

确保在任何PHP标记之前没有任何空格,并且你应该是好的!