通过微信接口上传图片并获取到自己的服务器
2015-12-08 23:02
656 查看
我们需要用户在企业号上传图片后,该图片保存在我们自己的数据库里。
所以我们要用到微信JSSDK中的“拍照或选择手机相册照片”、“上传图片接口”以及“获取临时素材接口”。
一开始以为有了media_id就用CURL去请求“获取临时素材接口”然后他返回图片的内容(估计是一堆乱码),最后自己解释出来保存到数据库。但请求来请求去没看到他返回文档说的这些东西:
弄了很久,还以为接口没给我返回东西,原来是CURL那里设置的时候要设置成:
这样才会显示返回头!里面就会包含图像的编码!其实就是一堆乱码!但后来发现直接使用PHP就可以将它下载到服务器上……一下是正确流程:
1.使用“拍照或选择手机相册照片”、“上传图片接口”,返回serverId(即media_id)。
所以我们要用到微信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);
相关文章推荐
- 微信扫码关注后实现自动分组
- android 滚动条下拉反弹的效果(类似微信朋友圈)
- 微信红包
- 微信公众平台高级群发接口
- 2015------微信支付
- 微信支付(JS API) JAVA
- Android实现类似微信的延迟加载的Fragment——LazyFragment
- 使用GO实现游戏批量搭服的小程序,
- 用java开发微信公众号:公众号接入和access_token管理(二)
- 微信模板消息推送
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<四>
- MFC 手把手 写一个文件播放小程序(这个是直接copy的 我会动手做一遍 然后发自己原创的)
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<三>
- 微信自定义回复
- iOS之微信支付交互图分析
- JS判断当前页面是否在微信浏览器打开的方法
- [Android]不经过第三方SDK直接调用系统自带分享QQ、微信
- 安卓微信浏览器加border-radius出现模糊(锯齿)
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<二>
- iOS 集成微信支付