$img = file_get_contents(trim($this->_G['g_img'])); $data['buffer'] = $img; $url = 'https://api.weixin.qq.com/card/create?access_token='.$accesstoken; $curl = curl_init(); curl_setopt ($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_NOBODY, 0); curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_POST,1); curl_setopt ($curl, CURLOPT_POSTFIELDS, $data); curl_setopt ($curl, CURLOPT_TIMEOUT,$timeout); $r = curl_exec($curl); curl_close ($curl);
或者直接 $data['buffer'] = new CURLFile(‘test.png');
我的php 已经不支持 @文件了
微信一直提示 {"errcode":47001,"errmsg":"data format error hint: [Acm1cA0439ent3] data is not utf8"}
想请问有什么方法可以上传上去吗?? 或者怎样把文件流转码?? 正常情况我程序是utf8的 不清楚怎样查看/转换文件流的编码 还希望得到大家的帮助~~!
http请求方式: POST/FROMhttps://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
参数 | 是否必须 | 说明 |
buffer | 是 | 文件的数据流 |
access_token | 是 | 调用接口凭证 |
调用示例(使用curl命令,用FORM表单方式上传一个图片):curl –Fbuffer=@test.jpg
返回状态码的说明
47001 解析JSON/XML内容错误
这是微信的手册
用了这样的一个方法结果无效
private function getSafeStr($str){
$s1 = iconv('utf-8','gbk',$str);
$s0 = iconv('gbk','utf-8',$s1);
if($s0 == $str){
return $s1;
}else{
return $str;
}
}
直 接前台提交表单 head指定 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 也试过了 依旧提示 {"errcode":47001,"errmsg":"data format error hint: [Acm1cA0439ent3] data is not utf8"}
--------------------------
尝试了一下 $img = 'data:image/jpg;base64,'.base64_encode($img); 图片是好用的 chrome能正常显示
微信返回{"errcode":47001,"errmsg":"data format error hint: [R00iDa0334ent2] Error before ------------------------------2a0e34532e52\r\nContent-Disposition: form-data; name=\"buffer\"\r\n\r\ndata:image\/jpg;base64,..."}
$data['buffer'] = addslashes($img);
微信服务器返回的
jpg返回false
png返回501
尝试了一下 $img = 'data:image/jpg;base64,'.base64_encode($img); 图片是好用的 chrome能正常显示
微信返回{"errcode":47001,"errmsg":"data format error hint: [R00iDa0334ent2] Error before ------------------------------2a0e34532e52\r\nContent-Disposition: form-data; name=\"buffer\"\r\n\r\ndata:image\/jpg;base64,..."}
引用来自“很懒的家伙”的评论
尝试了一下 $img = 'data:image/jpg;base64,'.base64_encode($img); 图片是好用的 chrome能正常显示
微信返回{"errcode":47001,"errmsg":"data format error hint: [R00iDa0334ent2] Error before ------------------------------2a0e34532e52\r\nContent-Disposition: form-data; name=\"buffer\"\r\n\r\ndata:image\/jpg;base64,..."}
老版本的微信读取图片输出 dataURL有问题,合法的是 'data:image/jpg;base64,....',微信读取出来的是 'data:;base64,', 缺少mime格式,需要你自己加上。
下面是js的函数:
引用来自“mark35”的评论
引用来自“很懒的家伙”的评论
尝试了一下 $img = 'data:image/jpg;base64,'.base64_encode($img); 图片是好用的 chrome能正常显示
微信返回{"errcode":47001,"errmsg":"data format error hint: [R00iDa0334ent2] Error before ------------------------------2a0e34532e52\r\nContent-Disposition: form-data; name=\"buffer\"\r\n\r\ndata:image\/jpg;base64,..."}
老版本的微信读取图片输出 dataURL有问题,合法的是 'data:image/jpg;base64,....',微信读取出来的是 'data:;base64,', 缺少mime格式,需要你自己加上。
下面是js的函数: