【发布时间】:2012-06-09 15:39:10
【问题描述】:
我正在尝试通过 https 下载上传的文件,而文件本身下载时无法查看。
我尝试了 JPG、DOC 和 XLS 文件,但都出现了同样的问题,在所有情况下,如果我通过 FTP 下载,它们都可以完美打开,并且可以在使用脚本预下载的浏览器中正常打开。
这是显示我尝试使用的代码的脚本子集?知道它为什么会下载垃圾吗?
$_file = sanitiseData($_GET['doc']);
$filename = '/doc_uploads/'.$_file;
if (file_exists($filename)) {
header('Content-type:image/jpg');
header('Content-Disposition: attachment; filename="'.$_file.'"');
echo file_get_contents($filename);
} else {
echo "The file $_file does not exist";
}
以下是尝试通过浏览器查看下载的 JPG 时的垃圾示例:
����JFIF��;创建者:gd-jpeg v1.0(使用 IJG JPEG v62),质量 = 90 ��C ��C ��R�"����}!1AQa"q2 ��#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������ ���������������������������������������������������� w!1AQaq"2�B���� #3R�br�$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������ ������������������������������������������������������ ��?�P��q\�O�^�-�C�z�z����o�N��P;��.i�~k+Զ���|�7`�' e����G�>+���_�6�%�Ԓ��Y�w���P�~.����2E�� ��"��������ms�� ��[���?��%|"�R5�s�c������=?V��>����IG�=?V��>���I_Q@w��� �����������o����������=?V��>���IG�=?V��>���I_Q@w����o ���������o����������=?V��>���IG�=?V��>���I_Q@w����o�� ������o����������=?V��>���IG�=?V��>���I_Q@w����o���� �����o����������=?V��>���IG�=?V��>���I_Q@w����o������ ���o����������=?V��>���IG�=?V��>���I_Q@w����o�������� �o����������=?V��>���IG�=?V��>���I_Q@w����o���������o ����������=?V��>����IG�=?V��>���I_Q@w����o����������o�� ��������=?V��>���IG�=?V��>���I_Q@w����o����������o���� ������=?V��>���IG� =?V��>����I_Q@w����o����������o����������=GU��>���� �N�v ������%|!E~�xO� �ỹx_P����j(�z����_
【问题讨论】:
-
你说的这些文件的内容究竟是什么?我的意思是,给一个垃圾样本。
-
我会推荐
readfile(...)而不是file_get_contents(...)因为file_get_contents(...)返回一个字符串,而readfile(...)有效地返回二进制数据,尽管它说它返回typeof(int) -
(
readfile(...))[php.net/manual/en/function.readfile.php] 有一些关于如何执行下载脚本的好信息。只需将application/octet-stream更改为image/jpeg -
readfile 的行为方式完全相同,我开始认为这是服务器或 PHP 配置问题
-
@ColeJohnson BINGO!那行得通 - 我使用了代码示例 php.net 并且它有效!谢谢!我无法将您的回复标记为答案,但它对我有用!
标签: php