这几天接收别人的微信小程序,需要添加文件上传和下载的功能,上传没什么好说的,微信没有打开文件夹的功能,只能打开聊天记录,查找收到的文件,再上传。今天要说的是小程序下载非视频类和非图片类的文件(无法直接保存到相册的文件类型),并保存到手机本地的方法。
好了,废话说了不少,开始切题,直接上代码:
const gbl = getApp().globalData;
Page({
/*
....其他方法...
*/
// 下载电子表格模板
downloadTemplate: function(){
wx.downloadFile({
url: gbl.baseUrl + '/person/downloadTemplate/' + this.data.fileName,
success: function(res){
if (res.statusCode === 200) {
// 通过内置文档对象打开文档,便于另存为
wx.openDocument({
filePath: res.tempFilePath,
fileType: 'xls',
showMenu: true // 关键,这里开启预览页面的右上角菜单,才能另存为
})
}
}
})
}
})
怎么样,看似代码很简单,但网上却找不到一个完整的、可用的示例代码,这是我花好几个小时,反复查找资料,反复修改调试,经过N次验证得到的结果,个中郁闷不足为外人道也。。。。。
另外需要注意的一点,就是服务端,下载文件的接口,http的头信息里,最好把文件类型对应的"Content-Type"写准确,避免前端不能准确识别文件类型。如:
res.set("Content-Type", "application/x-xls"); //电子表格
res.set("Content-Type", "application/pdf"); //pdf文档