php把服务器文件curl提交,php中使用curl进行文件上传的巨坑
我是一个兼职后端的前端程序员。
我用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提交,php中使用curl进行文件上传的巨坑相关推荐
- php 上传word文件 源码,THINKPHP中word文档的上传与下载
点击上传按钮 控制器public function uplo(){ $gid=I('get.id'); // var_dump($gid);die; $this->assign('GID',$g ...
- linux的ftp轮询上传文件,Android中实现异步轮询上传文件
前言 前段时间要求项目中需要实现一个刷卡考勤的功能,因为涉及到上传图片文件,为加快考勤的速度,封装了一个异步轮询上传文件的帮助类 效果 先上效果图 设计思路 数据库使用的框架是GreenDao,一个非 ...
- Windows操作系统远程Linux服务器传输文件方法(以EasyDSS云平台、EasyNVR上传部署为例)...
本文转自博客:https://blog.csdn.net/black_3717/article/details/79769406 问题背景: 之前给客户部署我们一款EasyDSS云平台(配合EasyN ...
- win7搜索文件怎么搜索文件名中带圆括号的文件?
win7搜索文件怎么搜索文件名中带圆括号的文件? System.FileName:~="(" 这样就行. 括号上加个引号 ~= 是包含的意思, ~< 是以什么为开头, = 是 ...
- IDEA中Spring MVC实现图片上传并显示
我们都知道web项目需要部署到tomcat服务器中运行 那么,我们又是如何通过tomcat来访问存放在本地磁盘中的图片呢?,通过tomcat访问本地图片,需要配置虚拟路径,下面介绍两种配置虚拟路径的方 ...
- 调用android的拍照或本地相册选取再实现相片上传服务器,Android调用系统相机、本地相册上传图片(头像上传(裁剪)、多张图片上传)...
开发中基本上都会有头像上传的功能,有的app还需要多张图片同时上传,下面简单将头像上传以及多张图片上传功能整理一下.图片选择仿照微信选择图片的界面.[参考] 多图片选择器 !!!推荐一个动态权限请求的 ...
- java ftp ftpclient_详解JAVA中使用FTPClient工具类上传下载
详解JAVA中使用FTPClient工具类上传下载 在Java程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件.本文简单介绍如何利用jakarta commons中的FTPClie ...
- window linux上传文件命令,windows通过cmd命令行使用sftp上传文件至linux
一问:sftp是什么? sftp 是一个交互式文件传输程式.它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性.下边就简单介绍一下如何远程连接主机,进行文件的上传和下载,以及一些相关操作. ...
- java多图片上传插件,Bootstrap中的fileinput 多图片上传及编辑功能
Bootstrap中的fileinput 多图片上传及编辑功能 2019-01-01 编程之家收集整理的这篇文章主要介绍了Bootstrap中的fileinput 多图片上传及编辑功能,编程之家小编觉 ...
最新文章
- 【Qt】ubuntu QtCreator的pro文件中使用pkg-config
- linux线程函数大全
- java multivaluemap_java – 使用自定义值集合类型创建Commons Collections MultiValueMap
- Scala具体解释---------Scala是什么?可伸展的语言!
- java流与文件——内存映射文件
- asyncio oracle 异步,带有asyncio futures和RuntimeError的InvalidStateError与aiohttp时使用期货回调...
- Mybatis(13)动态sql语句if/where/foreach
- django-自定义错误页面-404
- angularjs源码笔记(4)--scope
- 熊猫烧香系列变种分析报告
- 码支付(php版本)应用
- 2018java程序员面试题整理
- 一位考研党亲自整理的大学计算机网络基础知识总结(不看后悔版)
- MeGui原滤镜使用心得
- 安卓抓jdwskey
- 开源 | 携程机票BDD UI Testing框架 - Flybirds
- cURL error 77: error setting certificate verify locations: CAfile: d:\cacert.pem CApath: none (see h
- 计算机理论什么是信道容量,信道容量
- Conflux 生态项目扶持计划首批扶持项目出炉
- google play直接下载apk安装包文件教程(blynk)