通过微信接口上传图片并获取到自己的服务器

       我们需要用户在企业号上传图片后,该图片保存在我们自己的数据库里。

       所以我们要用到微信JSSDK中的“拍照或选择手机相册照片”、“上传图片接口”以及“获取临时素材接口”。

       一开始以为有了media_id就用CURL去请求“获取临时素材接口”然后他返回图片的内容(估计是一堆乱码),最后自己解释出来保存到数据库。但请求来请求去没看到他返回文档说的这些东西:

      

{
   HTTP/1.1 200 OK
   Connection: close
   Content-Type: image/jpeg 
   Content-disposition: attachment; filename="MEDIA_ID.jpg"
   Date: Sun, 06 Jan 2013 10:20:18 GMT
   Cache-Control: no-cache, must-revalidate
   Content-Length: 339721
   
   Xxxx
}

      弄了很久,还以为接口没给我返回东西,原来是CURL那里设置的时候要设置成:

curl_setopt ($ch, CURLOPT_HEADER, 1);

      这样才会显示返回头!里面就会包含图像的编码!其实就是一堆乱码!但后来发现直接使用PHP就可以将它下载到服务器上……一下是正确流程:

      1.使用“拍照或选择手机相册照片”、“上传图片接口”,返回serverId(即media_id)。

var images = {
        localId: [],
        serverId: []
    };
    wx.chooseImage({
            success: function(res) {
                images.localId = res.localIds;
                alert('已选择 ' + res.localIds.length + ' 张图片');

                if (images.localId.length == 0) {
                    alert('请先使用 chooseImage 接口选择图片');
                    return;
                }
                var i = 0, length = images.localId.length;
                images.serverId = [];
                function upload() {
                    wx.uploadImage({
                        localId: images.localId[i],
                        success: function(res) {
                            i++;
                            alert('已上传:' + i + '/' + length);
                            images.serverId.push(res.serverId);
                            if (i < length) {
                                upload();
                            }
                        },
                        fail: function(res) {
                            alert(JSON.stringify(res));
                        }
                    });
                }
                upload();
            }
        });
       2.前端拿到 serverId(即media_id)后,将此作为参数去请求后台“获取临时素材接口”

       //根据微信JS接口上传了图片,会返回上面写的images.serverId(即media_id),填在下面即可
        $str = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=''&media_id=''";
        //获取微信“获取临时素材”接口返回来的内容(即刚上传的图片)
        $a = file_get_contents($str);
       //__DIR__指向当前执行的PHP脚本所在的目录
        echo __DIR__;
        //以读写方式打开一个文件,若没有,则自动创建
        $resource = fopen(__DIR__."/1.jpg" , 'w+');
        //将图片内容写入上述新建的文件
        fwrite($resource, $a);
        //关闭资源
        fclose($resource);

    


你可能感兴趣的:(图片,服务器,微信)