Closed ccstorm closed 9 years ago
还发现一个问题,同一个图片,后台服务post上传和直接页面上传产生的md5竟然不一样
第一个问题是,第一次上传这个图片的时候把文件夹建好了,在write文件的时候失败了,而且zimg发生coredump,而后又有多次上传,结果检测到这个文件夹已存在,于是认为图片已存在,直接就放弃保存了。
这儿确实是一个bug,文件夹存在不能证明文件存在,需要修改。
至于写文件失败的问题,看log还发现不了什么线索,我还得想办法监控一下write的结果才行。你那儿这个情况出现的频繁吗,怀疑是硬盘故障还是什么的导致系统调用失败。
最后关于multipart/form和binary上传md5不一致的问题,你可以把这个图传到 http://demo.buaa.us 上并且留下其md5给我,我来重试复现。
硬盘应该没有故障吧,就这一个文件发现有问题。关键的问题是上传结果返回了成功。这样就导致我认为图片上传成功了,最后引用的地址是图片不存在。 那个图片已经上传好了。md5是0e2dd0ac3b33b2e3f6d932eaf738dbdb 后台服务上传的就是上面日志可以看到的:e2f5d61a393092aefb5094a5b5074731
两个问题,我分开来讲一个一个说。
Q1:『关键的问题是上传结果返回了成功。这样就导致我认为图片上传成功了,最后引用的地址是图片不存在。』
原因是第一次上传的时候,建好了目录,但是还没来得及写好文件,zimg就退出了,我又查看了一下log,没有任何报错,也没有开始写文件的log,说明不是系统调用的时候出错,而是『被kill了』。具体是什么原因被kill掉了,目前无法得知。后面的上传,之所以会返回成功,是因为判断逻辑有缺陷,只检查了那个目录而没有检查文件是否存在,所以一直返回给你成功。这个bug我已经修改提交了。
Q2:『同一个图片,后台服务post上传和直接页面上传产生的md5竟然不一样』
我已经拿到了你这个图片,并且确认过md5正确之后,分别采用curl和网页上传,『没有发生任何错误』,全部上传成功且md5正确。你那边出错,应该是你所用的『后台服务post上传』方式不对,估计你用的是php里面的curl库吧,如果是的话,参考这个用法上传:http://fanrong33.com/archives/67.html
第一个问题明白了。 第二个问题,我不是php curl,是使用java编写的。POST方式提交,Content-Type写的图片的格式,也就是文件扩展名。使用outputStream直接写文件数据。
遇到同样的问题,图片上传,返回了MD5值,却找不到该文件。MD5值为:84d91976654b7a4029530be44f027bbf
@wish-pig 请查看一下log并发送给我看看。
你是刚装好zimg吧?然后传完访问返回404的吧,如果是的话,应该是你的机器上imagemagick所需的库不够或者新版本的原因,还是把log贴出来我看一下吧。
我也是用java中的httpclient 来post,也出现了这个问题,已经反应到上面了#115
后台使用服务上传,返回成功,但是实际zimg未把图片存下来。 [root@MapEngine_SDB_54 ~]# cd /zimg/img/ [root@MapEngine_SDB_54 img]# find -name e2f5d61a393092aefb5094a5b5074731 ./907/373/e2f5d61a393092aefb5094a5b5074731 [root@MapEngine_SDB_54 img]# ls 907/373/e2f5d61a393092aefb5094a5b5074731/ [root@MapEngine_SDB_54 img]# 图片目录下为空 日志中关于该文件的记录没有打印失败,但有zimg重启动的记录。我使用supervisor监控的 重启后又有多次保存,但都失败了
第一次保存
上传后再次访问失败