针对ios手机,wx.downloadFile方法要设置filePath,指定文件下载后存储的路径 (本地路径), 才可预览文件
// 下载
Component({
properties: {
lists: {
type: Array,
value: []
}
},
data: {},
ready: function() { },
methods: {
// 判断文件类型
whatFileType(url){
let sr = url.lastIndexOf('.') // 最后一次出现的位置
let fileType = url.substr((sr+1)) // 截取url的类型
return(fileType)
},
// 下载文件
/**
* 本地文件存储的大小限制为 10M
*/
onDown(e){
let fileTypes = ['doc','docx','xls','xlsx','ppt','pptx','pdf']
let imageTypes = ["jpg", "jpeg", "png"]
let fileType = this.whatFileType(e.target.dataset.fileurl)
let fileId = e.target.dataset.filed
wx.showLoading({
title: '加载中',
})
wx.getSavedFileList({ // 获取文件列表
success(res) {
res.fileList.forEach((val, key) => { // 遍历文件列表里的数据
// 删除存储的垃圾数据
wx.removeSavedFile({
filePath: val.filePath
});
})
}
})
wx.downloadFile({
url: e.target.dataset.fileurl,
//fileId也可以是中文文件名称
filePath: wx.env.USER_DATA_PATH + "/"+ fileId + "."+fileType,
method: 'GET',
success: function(res){
if(fileTypes.includes(fileType)){
wx.openDocument({
filePath: res.filePath,
showMenu: true,
flieType: fileType,
success: function (res) {
wx.hideLoading()
console.log('打开文档成功')
},
fail: function(err){
wx.hideLoading()
console.log('打开文档失败:', err)
}
});
}else if(imageTypes.includes(fileType)){
wx.hideLoading()
wx.previewImage({
showmenu: true,
current: res.filePath, // 当前显示图片的http链接
urls: [res.filePath] // 需要预览的图片http链接列表
})
}else{
wx.hideLoading()
wx.showModal({
title: '提示',
content: "文件类型不支持预览",
showCancel: false
})
}
},
fail: function (err) {
wx.hideLoading()
wx.showToast({
title: "下载超时",
icon: 'none'
})
console.log('下载失败:', err);
}
})
}
}
})
最新版代码去掉了wx.saveFile方法。直接wx.downloadFile后wx.openDocument即可预览,忽略了保存文件方法
下载文件且重命名兼容ios需要注意的地方
downloaFile 方法配置filePath路径
downloadFile的返回参数res中,取
res.filePath
来用而不是。
res.tempFilePathopenDocument 设置
flieType
和filePath
以上方法可以下载常见图片/office 文档。其他类型文件兼容性不做参考。
https://www.leftso.com/article/2405132014377411.html