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

上一篇: PHP corrupt file upload

下一篇: How to support IDM without allow request the page two times