【问题标题】:PHP image download with header带标题的PHP图像下载
【发布时间】:2014-07-20 21:48:53
【问题描述】:

我已经成功实现了一些 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 照片查看器错误如下: “Windows 照片查看器无法打开此图片,因为照片查看器不支持此文件格式,或者您没有照片查看器的最新更新”。

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

【问题讨论】:

    标签: php image-processing http-headers


    【解决方案1】:

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

    【讨论】:

    • 再次,无法在 Paint 中预览或打开(文件格式不支持 msg) - 但在 Photoshop CC 中打开正常。数据绝对完好无损,但发生了一些奇怪的事情。与上述相同的测试图像。
    • 你能给我一个下载的图片的链接吗?
    • 感谢您的宝贵时间 - 我已在此处上传下载的文件:thenally.com/work/php-tests/header/files/herzog_dl.jpg。没想到在浏览器中查看下载的文件……也不显示。
    • 我已经用来自 Chrome 控制台的错误消息更新了 OP。
    【解决方案2】:

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

    基本上不得不这样做:

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

    只要确保您在任何 PHP 标记前没有任何空格,您就可以了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2016-04-30
      • 2011-05-27
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      相关资源
      最近更新 更多