目录
1. 配置downloadFile域名
2. 下载文件-代码实现以及注意事项
3. 微信小程序下载文件ios无法预览-完整方案
微信小程序上传文件可查看这篇文章:微信小程序 上传文件response的内容返回格式需要转变为json对象
登录小程序平台,找到【开发管理】-【开发设置】,在服务器域名模块设置downloadFile域名
注意事项:
downFile.wxml:
{{item.name}}
下载
downFile.js:
// 下载
Component({
properties: {
lists: {
type: Array,
value: []
}
},
data: {},
ready: function() { },
methods: {
// 下载文件
/**
* 本地文件存储的大小限制为 10M
*/
onDown(e){
wx.getSavedFileList({ // 获取文件列表
success(res) {
res.fileList.forEach((val, key) => { // 遍历文件列表里的数据
// 删除存储的垃圾数据
wx.removeSavedFile({
filePath: val.filePath
});
})
}
})
wx.downloadFile({ //下载
url: e.target.dataset.fileurl, // 从后端获取的url地址,赋值在标签的data属性上
success: function(res){
const tempFilePath = res.tempFilePath;
wx.saveFile({ //保存文件到本地
tempFilePath,
success (res) {
const savedFilePath = res.savedFilePath;
wx.openDocument({ //新开页面打开文档
filePath: savedFilePath,
showMenu: true,
flieType: 'pdf',
success: function (res) {
console.log('打开文档成功')
},
fail: function(err){
console.log('打开文档失败:', err)
}
});
},
fail: function (err) {
console.log('保存失败:', err)
}
})
},
fail: function (err) {
console.log('下载失败:', err);
}
})
}
}
})
产生的问题:
以上经验证,安卓手机上文件或者图片均可预览,唯独ios手机无法打开!!!!
提示以下内容:
在ios手机上提示: openDocument:fail filetype not supported
针对ios手机,wx.downloadFile方法要设置filePath,指定文件下载后存储的路径 (本地路径), 才可预览文件
完整最新版代码如下:
思路:区分url类型,若为['doc','docx','xls','xlsx','ppt','pptx','pdf']中的一种,则执行wx.openDocument();若为["jpg", "jpeg", "png"]中的一种,则执行wx.previewImage()
// 下载
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,
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即可预览,忽略了保存文件方法
欢迎点赞并收藏,可以的话关注一下吧!(一键三连~)
光收藏不点赞的同学就不地道了哦!