PHP CURL post数据报错 failed creating formpost data


Posted in PHP onOctober 16, 2016

在做微信卡券使用curl上传logo图片时,发现一个报错:

failed creating formpost data

代码中数组如下:

$data = array('buffer' => '@test.jpg');

结合微信给的文档,检查语法,貌似并没有发现什么错误...

经过上网查询和验证,最终发现,问题出现在 @ 这里,如果在 @ 前面加一个 \ 转义下就可以了,在php官方的bugs.php.net中也有提到(本文最后提供网址)

最终代码:

$data = array('buffer' => '\\@test.jpg');

问题解决。

bugs地址参考:https://bugs.php.net/bug.php?id=50060

我们再来看一个实例:

之前写过一个php使用curl上传文件的代码,今天暴出了一个bug,curl错误信息为"failed creating formpost data"

先说一下curl上传文件的过程吧

$file =array("upimg"=>"@/tmp/tmp.jpg");//文件路径,前面要加@,表明是文件上传. 
$url = 'http://localhosts/upload.php'; 
$ch = curl_init(); 
curl_setopt($ch ,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,true); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$file); 
curl_exec($ch);

这里有两个地方需要注意:

1、$file必须是数组

2、上传文件的路径前面加@

3、路径必须使用决定路径

现在分析出现"failed creating formpost data" 错误原因

首先很快就定位到出现该问题的原因是路径问题,分析了程序代码也没发现什么问题,始终不得解

最后通过错误日志查得这个原因是因为curl post提交的数据参数中有一个参数内容是以@符号开头的,

比如说要上传/tmp/tmp.jpg,同时提交简介,这样参数值就是 path='/tmp/tmp.jpg', 输入简介desc='@test haha';

根据手册上说curl post提交数据有两种方式

1.curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp'); 
 
2.curl($ch, CURLOPT_POSTFIELD, 'pic=@/tmp/tmp.jpg&filename=tmp')

在有上传文件的情况下必须使用第一种方式

curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp'); 

这样如果第一字符是@符后面的内容均会被解析成地址,如果地址不存在就会抛出该错误,就想简介desc @test 这个路径是不存在的

第二种方式只会将其当作普通字符串处理

PHP 相关文章推荐
用PHP制作静态网站的模板框架
Oct 09 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
php封装的表单验证类完整实例
Oct 19 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
PHP后门隐藏的一些技巧总结
Nov 04 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 #PHP
php根据数据id自动生成编号的实现方法
Oct 16 #PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 #PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 #PHP
php组合排序简单实现方法
Oct 15 #PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 #PHP
php实现博客,论坛图片防盗链的方法
Oct 15 #PHP
You might like
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
js类 from qq
2006/11/13 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
详解vue-router基本使用
2017/04/18 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python爬取网页转换为PDF文件
2018/06/07 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python os.access()用法实例
2019/02/18 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
python学生信息管理系统实现代码
2019/12/17 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
经贸日语专业个人求职信范文
2013/12/28 职场文书
简历的自我评价
2014/02/03 职场文书
广播节目策划方案
2014/05/23 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
生产操作工岗位职责
2014/09/16 职场文书
员工工作能力评语
2014/12/31 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
golang连接MySQl使用sqlx库
2022/04/14 Golang
Nginx的gzip相关介绍
2022/05/11 Servers