需求是下载图片并保存到本地,可是小程序请求后端接口下载文件,返回的是二进制流文件。如何处理!不多说,直接上代码
wx.request({
url: '接口地址',
method: 'get',
header: {
"token": '后端接口需要的token'
},
responseType: "arraybuffer", //此处是请求文件流,必须带入的属性
success: function (res) {
if(res.statusCode === 200){
var imgSrc = wx.arrayBufferToBase64(res.data);//二进制流转为base64编码
var save = wx.getFileSystemManager();
var number = Math.random();
save.writeFile({
filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
data: imgSrc,
encoding: 'base64',
success: res => {
wx.saveImageToPhotosAlbum({ //保存为png格式到相册
filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
success: function (res) {
wx.showToast({
title: '下载成功',
icon: 'none',
duration: 2000, //提示的延迟时间,单位毫秒,默认:1500
})
},
fail: function (err) {
console.log(err)
}
})
},
fail: err => {
console.log(err)
}
})
}
},
fail: function (error) {
console.log(error);
}
});