gpt4 book ai didi

PHP 文件上传损坏的 JPEGS

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:52 25 4
gpt4 key购买 nike

我们有一个使用 Andrew Valums ajax 文件 uploader 的网络应用程序,如果我们一次开始上传 5 - 10 张图片,那么更频繁的情况下至少有 2 或 3 张会导致相同的 gd 错误“损坏的 JPEG 数据”

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]:
gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data:
47 extraneous bytes before marker 0xd9 in ....

然而,这并没有发生在我们的旧测试服务器或本地开发服务器上,只发生在我们的新生产服务器上。

服务器上的文件大小与我本地机器上的原始文件大小相同,因此它完成了上传,但我认为数据被服务器损坏了。

我可以通过删除并重新上传或通过 FTP 手动上传来“修​​复”损坏的文件

我们在 Godaddy 上有一个共享主机,并且刚刚开始在一个新机器上遇到这个问题(我设置的,所以可能解释了很多 :) CentOS 5.5+、Apache 2.2.3、PHP 5.2.10

你可以在这里看到一些好的和坏的图片示例。 http://174.127.115.220/temp/pics.zip

当我对它们进行 BinDiff 时,我看到一个一致的模式,损坏总是 64 字节 block ,虽然损坏 block 之间的距离不是恒定的,但数字 4356 经常出现。

我真的认为我们可以排除互联网,因为使用 TCP 进行错误检查和重传非常可靠,而且浏览器版本之间似乎没有区别,或者如果我关闭防病毒和防火墙。

所以我要选择 Apache/PHP 配置?

最佳答案

一些相机会在文件中附加一些数据,这些数据会被错误地解释(很可能会对标题中的字符编码造成影响)。

我找到的解决方案是像这样以二进制模式读取文件

$fh = fopen('test.jpg', 'rb');
$str = '';
while($fh !== false && !feof($fh)){
$str .= fread($fh, 1024);
}

$test = @imagecreatefromstring($str);

imagepng($test,'save.png');

关于PHP 文件上传损坏的 JPEGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com