PHP损坏的文件上传
我试图让用户上传文件到我的网站上,但不幸的是,有些文件在阅读时似乎变得腐败。 我已经尝试了图像和html文件,并且所有图像都是通过损坏的(HTML文件通过罚款)。
要上传我使用标准HTML表单和PHP $ _FILES数组的文件。 然后我使用下面的代码来读取文件的内容:
$ filename = $ _FILES ['varname'] ['tmp_name'];
$ handle = fopen($ filename,“r”);`
$ contents = fread($ handle,filesize($ filename));
FCLOSE($处理);
不幸的是,$内容的价值现在与我上传的文件略有不同(这里是从文件顶部的一个片段):
原始文件:
ÿ·ExifII *ÏDucky<ÓAdobed¿€Ñ
新文件:
ÿ·Exif II *ÏDucky <ÓAdobed‬
正如你所看到的,间距有所不同。 任何想法会造成这种情况? 我处理文件读取不正确的二进制文件? 看起来很奇怪,对于我上传的任何文本文件都可以。
谢谢!
你如何打印$内容? 你确定这是阅读文件时遇到的问题吗?
我想也许这是打印文件到输出的问题...尝试打印它的二进制方式。 就像是:
$data = unpack("C*", $contents);
foreach ($data as $v)
{
echo $v, ' ';
}
并将其与原始文件的二进制转储进行比较...
我通常会输出这样的文件:
header("Content-Disposition: attachment; filename="$fileName"");
readfile("$HOME_DIR/uploads/$fileName");
exit();
无论如何,要尝试调试您的问题,您应该先了解哪个阶段失败。 上传或下载? 要检查,只需进入你的网络服务器并通过FTP下载文件,然后用二进制编辑器打开它。 如果它已经损坏,那么你需要调查你的上传阶段,否则这是另一回事。
链接地址: http://www.djcxy.com/p/45515.html下一篇: How to support IDM without allow request the page two times