使用passthru()下载文件会导致文件损坏/修改

时间:2018-11-14 10:29:21

标签: php download yii2 header passthru

我有一个PHP Yii2网络应用程序,该应用程序使用passthru()运行命令行脚本。 passthru()的结果应传递到下载的文件中,以便用户可以下载passthru()的输出。

示例:

如果我执行以下命令行:

$ /bin/cat /PATH/pic.jpg > output.jpg

...我得到一个文件output.jpg,它与pic.jpg相同(相同的md5校验和)

但是我需要在Web应用程序中执行此机制:

如果我使用passthru()进行了同样的操作,以便将文件发送到用户浏览器:

            header("Cache-Control: private");
            header("Content-Type: application/octet-stream");
            header("Content-Disposition: attachment; filename=download.jpg");
            passthru ('/bin/cat /PATH/pic.jpg');

....然后我得到一个download.jpg,它与pic.jpg不同 在此示例情况下,download.jpg小1126字节(图片大小约为13MByte),并且在某些图片查看器中无法打开图片。

0 个答案:

没有答案