美文网首页Laravel开发实践
php中使用curl进行文件上传的巨坑

php中使用curl进行文件上传的巨坑

作者: stois | 来源:发表于2016-08-08 11:55 被阅读1403次

我是一个兼职后端的前端程序员。
我用laravel写了一套微信公众平台管理系统。有一个需求是,切换了开发模式之后,要将一些需要自动回复的图片先push到微信自己的服务器上,换回media_id,然后用户发关键字给公众号的时候,使用media_id来请微信返回这张图片。
在控制台直接敲curl命令很简单:

 curl -F media={real_path}/xxx.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={Token}&type=image"

但是用php发curl请求的时候,却一直internel error 500。
当时我是这样写的:

$data = array( 'media'=> "@{$imgUrl}" );
        $ch1 = curl_init();
    $timeout = 5;
        curl_setopt ( $ch1, CURLOPT_URL, $url );
  curl_setopt ( $ch1, CURLOPT_POST, 1 );
  curl_setopt ( $ch1, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $ch1, CURLOPT_CONNECTTIMEOUT, $timeout );
  curl_setopt ( $ch1, CURLOPT_SSL_VERIFYPEER, FALSE );
  curl_setopt ( $ch1, CURLOPT_SSL_VERIFYHOST, false );
  curl_setopt ( $ch1, CURLOPT_POSTFIELDS, $data );

        $result=curl_exec($ch1);
         curl_close($ch1);

在发现错误之后我进行了一些其他测试,发现传数据没问题,但文件一直不行。
接下来我在stackoverflow上看到了一篇文章:sending images via curl fails。蒙b的我直到第二天重新看才发现了一个新的对象:\CURLFile。
这是什么?接下来在segmentdefault上看到,有大神也踩了和我一样的坑
好了,看完之后我们明白了file传不了的原因:php版本不兼容.....
代码里的$data改成这样:

$data = array( 'media'=> new \CURLFile( $imgUrl ) );

没事不要读PHP的官方中文文档!版本跟不上坑死你!

相关文章

  • php中使用curl进行文件上传的巨坑

    我是一个兼职后端的前端程序员。我用laravel写了一套微信公众平台管理系统。有一个需求是,切换了开发模式之后,要...

  • PHP CURL 上传图片

    在PHP5.5之前的版本,curl上传文件的方法是使用 @+文件绝对路径将post数组传递给 **CURLOPT_...

  • CURL参数详解

    CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。 CURL...

  • php curl 返回空

    一、使用curl调用远程PHP文件来获取相应数据 $url = 'PHP文件所在地址';$params = ['...

  • CI的分页和文件上传小实例

    CI自带的内容 分页内容文件上传 分页使用 文件上传 user.php uploadfile.php

  • php的curl基本使用方法

    php当中可以使用curl进行http操作。核心使用到4个函数curl_init()对curl操作进行初始化cur...

  • PHP 无法使用curl_init()函数。

    PHP 无法使用curl_init()函数。 发生这个问题后,先查看了PHP.ini文件,发现curl的扩展是打开...

  • PHP - cURL 使用DEMO、并发请求

    使用CURL上传文件 CURL请求类 curl 实现并发请求 并发测试 传送门:飞鸿影的博客 curl_multi...

  • PHP 使用PHPExcel实现文件导入与导出功能

    PHPExcel文件导入导出常用方法1、PHP文件导入上传文件页面样式HTML代码 PHP代码文件上传与导入 使用...

  • 使用CURL上传文件

    近日再使用一个第三方接口的时候,使用curl调用一个上传文件的接口。 再多次失败后,终于找到了真经!!! 言归正传...

网友评论

    本文标题:php中使用curl进行文件上传的巨坑

    本文链接:https://www.haomeiwen.com/subject/pkcrsttx.html