请在Chrome、Firefox、IE8+等现代浏览器浏览本站。 本博客所有文章为原创,图片不加水印,随意转载,但请注明来源,谢谢!

Centos下PHP无法Curl模拟Post上传文件的问题

后端 kxjhwbb 1881℃ 0评论

有个产品需要上传图片到贴图库。为此还开了个贴图库的会员。

用的方案是ueditor+贴图库插件,自己加了个从dz拉过来的前端上传控件,然后禁用了Ueditor的上传按钮,毕竟数据先过一次后端再到贴图库是很蛋疼的事情。

决定禁用的关键是,贴图库给出的插件还是远程拉图模式,也就是说,产品有CDN,图片先从用户手里到达服务器tmp目录,Ueditor保存到upload目录,贴图库再访问cdn抓图,图片还得从Cdn过一遍,而Cdn有时不及时抓取,则导致贴图库抓不到文件,心累。

 

禁用后,发现Ueditor本地上传目录还是老是有文件出现,很是奇怪,今天下午干脆研究一下,试了多种方式最后猜测到是直接拖动图片到编辑器会导致上传行为。

 

本想直接改前端,把前端上传行为转向贴图库,后来放弃,还是先从后台着手解决。

发现贴图库sdk里明明有post上传的函数,却不用,改了一下,发现硬是传不上去。

原来Curl的Post发送文件,在Centos下会有问题,国外的大神给出了解决方案,竟然是自写Curl的Body部份,心疼

关键函数:   这里$assoc是正常post数据数组,$files是文件数据数组(文件地址值不要再加@了,里面有file_get_contents)

 

方法怎么调用:   贴图库sdk的是post,我加了个postPlus

 

还需要修改贴图库sdk的上传方法

 

最后修改Ueditor+贴图库的 Uploader.class.php,原本的uploadFromWeb改为uploadFile,直接丢临时文件$this->file[“tmp_name”]进去,再把Ueditor的move_uploaded_file处理注释掉,返回的stateInfo强制改为SUCCESS,完工!

喜欢 (21)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址