PHP图片上传灰线

时间:2010-01-11 10:53:51

标签: php jquery image drupal upload

我有一个自定义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

我只是无法弄清楚差异?!到底是怎么回事?

由于

2 个答案:

答案 0 :(得分:1)

虽然它当然可能是传输错误损坏了JPG图像的一小部分,但如果这是一次事故,我会首先看一下用户。在上传之前调整图像大小时,更有可能出现问题。询问他们是否在上传之前立即调整图像大小,以及调整大小的文件的样子。让他们给你发电子邮件。

也许你想要上传原始的,完好无损的文件,这里有人可以通过查看来了解更多信息。

我首先会检查是否可以从完整的图像(让他们通过电子邮件发送给您),以及来自不同的图像在用户身边复制。


编辑(评论中空格不足)

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

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

顺便说一句,您可能希望对用户的图像进行后期处理以保护其隐私。 EXIF数据显示非常多,例如,请查看thisthis

答案 1 :(得分:0)

我认为$_SERVER['DOCUMENT_ROOT']会在最后给出网站的文档路径而不带斜杠('/')。

请用以下行替换上述代码的第二行,

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

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