【问题标题】:PHP image upload grey linesPHP图片上传灰线
【发布时间】:2011-01-03 17:17:38
【问题描述】:

我有一个自定义的 drupal 模块,它保存从 uploadify jquery 插件传递的上传文件。一切似乎都很好,但有些图像中出现了灰色块。见:

http://5oup.net/sites/default/files/360/5ouppic.jpg

这是用户提交的图片,我自己无法重现该问题 - 据我了解,这是服务器端问题,但我不确定如何解决该问题。

这是我的模块中处理上传的 PHP:

$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';

$filename = $_FILES['Filedata']['name'];
$filename = preg_replace("/[^A-Za-z0-9. ]/", '', $filename);
$filename = str_replace(" ", '_', $filename);

$targetFile =  str_replace('//','/',$targetPath) . $filename;       

$name = $filename;

mkdir(str_replace('//','/',$targetPath), 0755, true);
move_uploaded_file($tempFile,$targetFile);

上传是否以某种方式“停止”?关于为什么它只会出现在某些图像上而不是其他图像上的任何想法?非常感谢任何帮助!

詹姆斯


编辑 - 能够重现问题

我已经联系了一位用户,并且能够使用此 jpeg 重新创建问题(即每次上传时都带有灰色像素):

http://5oup.net/test/sucon.jpg

这个 jpeg 可以正常上传:

http://5oup.net/test/hd.jpg

我就是想不出区别?!到底发生了什么?

谢谢

【问题讨论】:

  • 您是否可能遇到了上传限制?例如脚本运行时?
  • 也许文件上传大小限制在800kb,你觉得这么小的图片可以吗?

标签: php jquery image drupal upload


【解决方案1】:

虽然这当然可能是传输错误损坏了 JPG 图像的一小部分,但如果这是一个单一的事件,我会先从用户的角度来看。当他们在上传之前调整图像大小时,更有可能出现问题。询问他们是否在上传前立即调整了图像的大小,以及调整后的文件是什么样的。让他们通过电子邮件向您发送所有内容。

也许您还想上传原始的、未损坏的文件,这里有人可以通过查看它来了解更多信息。

我将首先检查它是否可以从完整的图像(让他们通过电子邮件发送给您),以及从不同的图像复制到用户方面


编辑(评论空间不足)

非常非常奇怪。根据我对 JPG 格式的了解,这可能是传输仅在几个字节期间被破坏的典型行为:许多块可能会受到影响并导致这种情况。我不能说它可能是什么——可能是从硬盘问题(不太可能)到某些防火墙过滤掉数据的任何事情。 第一步肯定是获取原始图像并查看是否可以重现问题。我敢打赌它不能。然后进行磁盘检查,并尽可能多地进行替换、更改和测试(移动临时目录/可能更新服务器软件)。

如果没有任何帮助,作为最后的手段,您可能希望在另一台服务器上设置该站点的镜像副本,并在那里进行一些自动上传以查看它是否会再次发生。 Selenium IDE 可能会对此有所帮助。

顺便说一句,您可能希望对用户的图像进行后期处理以保护他们的隐私。 EXIF 数据揭示了很多,例如查看thisthis

【讨论】:

  • 感谢您的建议,我会与他们取得联系,看看能否重现问题。
  • 我已经与用户取得了联系,但我应该指出,整个网站的很多图片都发生了这种情况,我会说在上传图片的 5-10% 之间。
  • 哦,好吧,那么服务器端可能出现了问题。肯定没有涉及任何类型的后处理/调整大小?只有原始图片的原始上传?
  • 不,只是我问题中的代码,然后是一些数据库内容。这是一个谜题!
  • 非常感谢您的帮助,我会处理您的建议,并希望有好消息。也感谢您对 EXIF 数据的提醒,令人担忧的揭示!
【解决方案2】:

我认为$_SERVER['DOCUMENT_ROOT'] 会给出站点的文档路径,末尾不带斜杠('/')。

请将上面代码的第二行替换为下面一行,

$targetPath = $_SERVER['DOCUMENT_ROOT'] .'/'. $_REQUEST['folder'] . '/';

希望这对你有帮助....

【讨论】:

    猜你喜欢
    • 2011-05-07
    • 2016-10-12
    • 2011-03-16
    • 2013-04-29
    • 2012-11-08
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多