PHP CURL post数据报错 failed creating formpost data

yipeiwu_com6年前PHP代码库

在做微信卡券使用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 = '/zb_users/upload/202003/mz12esspn1n.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栈的定义、入栈出栈方法及基于堆栈实现的计算器。分享给大家供大家参考,具体如下: 栈是线性表的一种,他的特点是后入先出,可以这么理解,栈就像一个存东西的盒子,先放进去的...

php 文件上传代码(限制jpg文件)

复制代码 代码如下:<?php /* 图片上传类  仅限JPG格式图片 */ class uploadFile { var $inputName; //input名称 v...

php打包网站并在线压缩为zip

本文实例介绍了php打包网站并在线压缩为zip的方法,分享给大家供大家参考,具体内容如下 <?php //在URL后参加 ?pwd=密码 查看生...

PHP面向对象程序设计之类常量用法实例

类常量是PHP面向对象程序设计中非常重要的一个概念,牢固掌握类常量有助于进一步提高PHP面向对象程序设计的水平。本文即以实例形式描述了PHP程序设计中类常量的用法。具体如下: 类常量:类...

PHP7扩展开发之基于函数方式使用lib库的方法详解

本文实例讲述了PHP7扩展开发之基于函数方式使用lib库的方法。分享给大家供大家参考,具体如下: 前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PH...