参考文章
链接: 小程序文件下载并保存文件名打开
需求
- 以非临时文件名打开
- 自定义目录和文件名
思路
将文件写入系统存储,文件下载进度监听(非必需),写入存储前清空文件缓存。
代码实现
downloadFilePreview: function (e) {
let currentPage = this;
let { objectId, name } = e.currentTarget.dataset.file;
currentPage.clear();
let downloadTask = null; //下载进度监听器
downloadTask = wx.downloadFile({
url: `${app.globalData.url}/file/downloadfile?fileUrl=${objectId}`,
filePath: `${wx.env.USER_DATA_PATH}/${name}`, // 自定义文件的名称
method: "GET",
header: {
Authorization: "Bearer " + token.access_token,
},
success(res) {
let Path = res.filePath;
wx.getFileSystemManager().getFileInfo({
filePath: Path,
success: (f) => {
wx.getFileSystemManager().saveFile({
tempFilePath: Path,
filePath: `${wx.env.USER_DATA_PATH}` + "/" + name,
});
wx.showModal({
title: "是否打开文件",
content: "",
success(ans) {
if (ans.confirm) {
wx.openDocument({
filePath: wx.env.USER_DATA_PATH + "/" + name,
});
}
},
});
},
});
},
complete() {},
});
// 如果需要进度条
// downloadTask.onProgressUpdate((res) => {
// currentPage.setData({
// progress: res.progress,
// });
// });
},
/**
* 文件缓存清理
*/
clear() {
wx.getSavedFileList({
success(res) {
res.fileList.forEach((val, key) => {
// 遍历文件列表里的数据
// 删除存储的垃圾数据
wx.removeSavedFile({
filePath: val.filePath,
});
});
},
});