加入收藏 | 设为首页 | 会员中心 | 我要投稿 丽水站长网 (https://www.0578zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

七牛上传文件出现invalidmutilpartformat的处理办法

发布时间:2022-06-15 05:03:15 所属栏目:教程 来源:互联网
导读:七牛是一个不错的平台了,我们现在有很多的站长会把一些资源放到七牛上去了,但在使用过程中有时会碰到上传文件出现 invalid mutilpart format错误了,下面我们来看问题解决办法. 今天用umeditor编辑文章上传图片的时候发现一直卡在loading,打开控制台发现出
  七牛是一个不错的平台了,我们现在有很多的站长会把一些资源放到七牛上去了,但在使用过程中有时会碰到上传文件出现 invalid mutilpart format错误了,下面我们来看问题解决办法.
 
  今天用umeditor编辑文章上传图片的时候发现一直卡在”loading…”,打开控制台发现出现了500错误,进一步调试发现是七牛上传报错了.
 
  请注意最后那个:CURLOPT_SAFE_UPLOAD => false,这里应该是跟上传有关的设置,很有可能是这里的问题,果然,GOOGLE发现PHP的CURL上传文件跟PHP版本的关系很大.
 
  传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传,这与命令行直接调用cURL程序的语法是一致的:
 
  <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>(ch, CURLOPT_POSTFIELDS, array(
  
      'file' =>  
  '@'.realpath('image.png'
  ),  
  
  ));
  但PHP从5.5开始引入了新的CURLFile类用来指向文件,CURLFile类也可以详细定义MIME类型、文件名等可能出现在multipart/form-data数据中的附加信息,PHP推荐使用CURLFile替代旧的@语法:
 
  curl_setopt(ch, CURLOPT_POSTFIELDS, [
  
      'file' => new CURLFile(realpath('image.png')),  

  ]);
  PHP 5.5另外引入了CURL_SAFE_UPLOAD选项,可以强制PHP的cURL模块拒绝旧的@语法,仅接受CURLFile式的文件,5.5的默认值为false,5.6的默认值为true.
 
  但是坑的一点在于:@语法在5.5就已经被打了deprecated,在5.6中就直接被删除了,会产生 ErorException: The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead.
 
  对于PHP 5.6+而言,手动设置CURL_SAFE_UPLOAD为false是毫无意义的,根本不是字面意义理解的“设置成false,就能开启旧的unsafe的方式”——旧的方式已经作为废弃语法彻底不存在了,PHP 5.6+ == CURLFile only,不要有任何的幻想.
 
  我的部署环境是5.4(仅@语法)与服务器不同,所以必须写出带有环境判断的代码,从可靠的角度,推荐指定CURL_SAFE_UPLOAD的值,明确告知php是容忍还是禁止旧的@语法.
 
  注意在低版本PHP中CURLOPT_SAFE_UPLOAD常量本身可能不存在,需要判断.经过这些设置之后,上传就可以正常了.
 
 

(编辑:丽水站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读