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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
php判断是否为json格式的方法
Mar 04 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
php中array_column函数简单实现方法
Jul 11 PHP
自制PHP框架之路由与控制器
May 07 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
PHP中number_format()函数的用法讲解
Apr 08 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 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资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
浅谈php://filter的妙用
2019/03/05 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
python排序方法实例分析
2015/04/30 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
办公室驾驶员岗位职责
2013/11/15 职场文书
教师演讲稿范文
2014/01/08 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
商超业务员岗位职责
2015/02/13 职场文书