我们需要用户在企业号上传图片后,该图片保存在我们自己的数据库里。
所以我们要用到微信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)后,将此作为参数去请求后台“获取临时素材接口”