小程序下载文件并预览
需求分析最近优化了个原先写过的需求,回头复习复习小程序的 API是这样的,我需要下载一个文件并打开此文件优化:记录是否被下载过,如果下载过就直接打开获取文件下载链接,打开文件微信官方给的 wx.downloadFile() API 使用手册。wx.downloadFile({url: `${pic.meetingUrl}/weixin/noticeStart/downLoad/${this.sel
·
需求分析
最近优化了个原先写过的需求,回头复习复习小程序的 API
是这样的,我需要下载一个文件并打开此文件
优化:记录是否被下载过,如果下载过就直接打开
获取文件下载链接,打开文件
微信官方给的 wx.downloadFile()
API 使用手册。
wx.downloadFile({
url: `${pic.meetingUrl}/weixin/noticeStart/downLoad/${this.selectItem.recordId}`, // 下载资源的 url
success: (res) => {
wx.openDocument({
filePath: res.tempFilePath, // 文件路径,可通过 downloadFile 获得,
fileType: 'pdf', // 写下载后的文件的格式,这里距离是pdf
success: (res) => {
},
fail: (error) => {
},
});
},
fail: () => {},
complete: () => {},
});
优化
思路:保存下载后的文件,保存其路径到本地缓存,然后下次打开的时候判断一下本地缓存里是否有,如果有就打开,本地缓存没有的话,就先下载在打开。
const that = this;
const cacheFilePath = wx.getStorageSync(
`filePath-${this.selectItem.recordId}`
);
// 先判断这个文件是否下载过
// 如果下载过,尝试通过缓存,打开文件
// 否则就要下载,下载成功后保存本地缓存(临时路径信息),命名规则为 filePath + recordId
if (cacheFilePath) {
wx.openDocument({
filePath: cacheFilePath, //文件路径,可通过 downFile 获得,
fileType: this.selectItem.fileType, // 获取文件格式
success: (res) => {
},
fail: (error) => {
},
});
} else {
wx.showLoading({
title: "下载中",
mask: true,
});
wx.downloadFile({
url: `${pic.meetingUrl}/weixin/noticeStart/downLoad/${this.selectItem.recordId}`, // 下载资源的 url
success: (res) => {
// 隐藏 loading
wx.hideLoading();
// 下载成功后,保存文件路径到本地缓存
wx.setStorageSync(
`filePath-${this.selectItem.recordId}`,
`${res.tempFilePath}`
);
// 尝试打开下载后的文件
wx.openDocument({
filePath: res.tempFilePath, //文件路径,可通过 downFile 获得,
fileType: this.selectItem.fileType, // 获取文件格式
success: (res) => {
},
fail: (error) => {
},
});
},
fail: () => {},
complete: () => {},
});
}
更多推荐
已为社区贡献2条内容
所有评论(0)