欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

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

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

       所以我们要用到微信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)。


[javascript] view plain copy
  1. var images = {  

  2.         localId: [],  

  3.         serverId: []  

  4.     };  

  5.     wx.chooseImage({  

  6.             success: function(res) {  

  7.                 images.localId = res.localIds;  

  8.                 alert('已选择 ' + res.localIds.length + ' 张图片');  

  9.   

  10.                 if (images.localId.length == 0) {  

  11.                     alert('请先使用 chooseImage 接口选择图片');  

  12.                     return;  

  13.                 }  

  14.                 var i = 0, length = images.localId.length;  

  15.                 images.serverId = [];  

  16.                 function upload() {  

  17.                     wx.uploadImage({  

  18.                         localId: images.localId[i],  

  19.                         success: function(res) {  

  20.                             i++;  

  21.                             alert('已上传:' + i + '/' + length);  

  22.                             images.serverId.push(res.serverId);  

  23.                             if (i < length) {  

  24.                                 upload();  

  25.                             }  

  26.                         },  

  27.                         fail: function(res) {  

  28.                             alert(JSON.stringify(res));  

  29.                         }  

  30.                     });  

  31.                 }  

  32.                 upload();  

  33.             }  

  34.         });  

       2.前端拿到serverId(即media_id)后,将此作为参数去请求后台“获取临时素材接口”


  1. //根据微信JS接口上传了图片,会返回上面写的images.serverId(即media_id),填在下面即可  

  2.  $str = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=''&media_id=''";  

  3.  //获取微信“获取临时素材”接口返回来的内容(即刚上传的图片)  

  4.  $a = file_get_contents($str);  

  5. //__DIR__指向当前执行的PHP脚本所在的目录  

  6.  echo __DIR__;  

  7.  //以读写方式打开一个文件,若没有,则自动创建  

  8.  $resource = fopen(__DIR__."/1.jpg" , 'w+');  

  9.  //将图片内容写入上述新建的文件  

  10.  fwrite($resource$a);  

  11.  //关闭资源  

  12.  fclose($resource);  

    


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26598303/article/details/50225845

来自  https://blog.csdn.net/qq_26598303/article/details/50225845

普通分类: