在h5端我一般使用window.location.href='url’下载一些文件
但是当项目编译到微信小程序中该方法不能使用,于是在翻阅微信小程序官方文档后总结了一下微信小程序的文件下载的方法
一.首先需要准备一下所要使用的微信小程序的API:
1.wx.downloadFile(Object object) 用来下载服务器文件
2.FileSystemManager.saveFile(Object object) 用来保存下载的文件
3.wx.openDocument(Object object) 用来打开下载的文件
二.然后是文件下载的大致流程:
首先是下载所需要的文件,然后会被保存在临时路径,此时需要将文件保存的本地路径中,最后就是打开改文件,打开改文件后该文件的右上角会有常用的设置按钮(保存到本地,选择其他应用打开等)。可根据自己的需求更改流程,这里只是提供一个思路。
三.示例代码
var _this = this
//获取微信的FileSystemManager
var wxFile = wx.getFileSystemManager()
wx.downloadFile({
//服务器上的文件地址
url: `${locals}/api/file/template/a.docx`,
//根据自己需求可加可不加token
header: {
"token": uni.getStorageSync("token")
},
success(res) {
//此时服务器的文件会被下载到本地的临时路径中,可以打开但是改文件的文件名是随机的
var filePaths = res.tempFilePath;
wxFile .saveFile({
tempFilePath:filePaths,
//将该文件从临时路径tempFilePath转移到本地文件filePath中,并重新给他起一个文件名
filePath:`${wx.env.USER_DATA_PATH}/a.docx`,
success(res1){
//此时可调用openDocument方法打开改文件
wx.openDocument({
//res1.savedFilePath是保存的本地路径
filePath:res1.savedFilePath,
//showMenu参数一定要写 版本太高不写会导致打开文件后右上角的设置按钮不显示
showMenu:true,
success(res){
//本人定义的提示消息方法根据自己的方法进行修改
that.$refs.uToast.show({
...that.$GetMssage(true, `下载成功,正在打开文件...`),
})
},
fail(err1){
//本人定义的提示消息方法根据自己的方法进行修改
that.$refs.uToast.show({
...that.$GetMssage(false, err1),
})
}
})
},
fail(err){
//本人定义的提示消息方法根据自己的方法进行修改
that.$refs.uToast.show({
...that.$GetMssage(false, err),
})
},
})
}
})