首页新闻找找看学习计划

微信错误 '{"errcode":41005,"errmsg":"media data missing"}'

0
悬赏园豆:20 [已解决问题] 解决于 2015-05-18 13:11

感谢您百忙之中抽空看我这个小问题,

实在是解决了好久,但是一直找不到解决方式,我看到您好久之前回答过,也就是在这个网页上

http://q.cnblogs.com/q/69572/

您说是在上传的流中插入\r\n可以解决,但是我还是不太明白怎么插入,我试了一下在这个片段中插入,但还是错误。希望能给予及时回答,非常感谢!!!

myt的主页 myt | 初学一级 | 园豆:188
提问于:2015-05-14 16:51
< >
分享
最佳答案
0

看看我自己的回答吧 

myt | 初学一级 |园豆:188 | 2015-05-18 13:10
其他回答(2)
0

参考看看:http://blog.csdn.net/yidongapi/article/details/23443933

收获园豆:20
幻天芒 | 园豆:36522 (高人七级) | 2015-05-14 17:11

谢谢,看了这个,但还是没能解决

支持(0) 反对(0) myt | 园豆:188 (初学一级) | 2015-05-14 17:51

@myt: 搜索下:media data missing ,挨着看看解决方案。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2015-05-15 09:13

@幻天芒: 已经解决了这个问题,是和php版本有关系,不同php版本下的curl_setopt函数有所区别,我原来的php版本好像是5.6.3,现在执行成本的php版本是5.5.1。希望对后来者有帮助吧

支持(0) 反对(0) myt | 园豆:188 (初学一级) | 2015-05-18 13:09

@myt: 我去,这种小版本都还这么大差异啊。。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2015-05-18 16:02

@myt: 你好,我也碰到这样的问题,版本问题,但是我不知道怎么改,麻烦帮下忙。。

public function _request($curl,$https='true',$method='GET',$data='null')
    {
        $ch=curl_init();//初始化会话
        // curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
        //设置
        curl_setopt($ch, CURLOPT_URL, $curl);   //curl为地址
        curl_setopt($ch, CURLOPT_HEADER, false);  //不要url的头部
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //输出返回的内容
        if($https)
        {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   //不需要验证主机
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);   //不需要证书验证
        }
        if($method=='POST')
        {
            curl_setopt($ch, CURLOPT_POST, true);
            @curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   //数据处理
        }
        //执行会话
        $content=curl_exec($ch);
        //关闭会话
        curl_close($ch);
        return $content;
    }

 

 

 //素材上传(多媒体上传)
    public function _createMedia($type,$file){
        $curl='https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$this->_getAccessToken().'&type='.$type;
          // $data = array(
                // 'type' => $type,
                 // 'media' =>curl_file_create('/PATH/TO/FILE')
                 // 'media' => new CURLFile('/PATH/TO/FILE')
            // );
        $data['type']=$type;
        $data['media']='@'.$file;
        $content=$this->_request($curl,true,'POST',$data);
        file_put_contents('./media',$content);//将其保存到文件

    }

 

 

错误:{"errcode":41005,"errmsg":"media data missing hint: [QNpKnA0242e292]"}

支持(0) 反对(0) yan123456789 | 园豆:200 (初学一级) | 2016-06-16 11:28
0

1、选择图片,上传资源
$media = $_FILES;
$jssdk = new LocationController(config('appid'), config('appsecret'));
$res = $jssdk->uploadImage(json_encode($media));
dump($res);die;
2、自己封装的图片上传函数:
public function uploadImage($media)
{
$url = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token=' . $this->getAccessToken();
$url .= '&type=image';
$rel = http_curl($url,true,10,'post',$media);
return $rel;
}
3、自己封装的http_curl函数
function http_curl($url, $isHttps = true, $timeout = 10, $type = 'get', $arr = ''){
// 1. 初始化
$ch = curl_init();
// 2. 设置选项
curl_setopt($ch, CURLOPT_URL, $url); //设置请求url
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //允许 cURL 函数执行的最长秒数。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置为1表示稍后执行的curl_exec函数获取的信息以字符串返回,而不是直接输出
curl_setopt($ch, CURLOPT_HEADER, 0);//设置为0表示不返回HTTP头部信息。
if ($isHttps) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查,以防获取https地址报错
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在,以防获取https地址报错
}
if ($type == 'post') {
curl_setopt($ch, CURLOPT_POST, 1); //设置为post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $arr); //绑定post参数
}
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
if($output === FALSE){
return "CURL Error:".curl_error($ch);
}
//直接返回数组
return json_decode($output,true);
//return $output;
}

我知道图片资源不对,但是不知道该怎么上传,楼主能解答一下么,多谢,我php版本是5.6的

落日长烟 | 园豆:202 (菜鸟二级) | 2018-10-12 10:16

问题解决了,哈哈

支持(0) 反对(0) 落日长烟 | 园豆:202 (菜鸟二级) | 2018-10-12 17:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册