uniapp实现微信小程序下载资源功能与H5有很大的不同,后台需返回Blob文件流
1.微信小程序实现下载资源功能
步骤1:下载文件
uni.downloadFile({
url:url, //调接口返给的url
success: function (res) {
uni.hideLoading()
if(res.statusCode==200){
var tempFilePath = res.tempFilePath
saveFile(tempFilePath)
}else{
uni.showToast({
icon:'none',
title:"报告下载失败"
})
}
},
fail: (err) => {
uni.hideLoading()
uni.showToast({
icon:'none',
title:"报告下载失败"
})
reject(err)
}
})
步骤2:保存文件
saveFile(tempFilePath) { //保存到本地
//文件保存到本地
uni.saveFile({
tempFilePath: tempFilePath, //临时路径
success: function(res) {
uni.showToast({
icon: 'none',
mask: true,
title: '文件已保存:' + res.savedFilePath, //保存路径
duration: 3000,
});
setTimeout(() => {
//打开文档查看
uni.openDocument({
filePath: res.savedFilePath,
success: function(res) {
// console.log('打开文档成功');
}
});
}, 3000)
}
});
}
步骤三:打开文档查看
//打开文档查看
uni.openDocument({
filePath: res.savedFilePath,
success: function(res) {
// console.log('打开文档成功');
}
});
2.H5实现下载资源功能
步骤1:获取下载文件
uni.downloadFile({
url:url, //调接口返给的url
success: function (res) {
uni.hideLoading()
if(res.statusCode==200){
var tempFilePath = res.tempFilePath
saveFile(tempFilePath)
}else{
uni.showToast({
icon:'none',
title:"报告下载失败"
})
}
},
fail: (err) => {
uni.hideLoading()
uni.showToast({
icon:'none',
title:"报告下载失败"
})
reject(err)
}
})
步骤2:保护存文件
saveFile(url) { //保存到本地
try {
const fileName = `报告名称`;
// new Blob 实例化文件流
//let url=fileData
//const url = window.URL.createObjectURL(new Blob([fileData],{ type: 'application/pdf' }))
const link = document.createElement('a')
link.style.display = "none"
link.href = url
console.log(url)
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
//下载完成移除元素
document.body.removeChild(link)
//释放掉blob对象
window.URL.revokeObjectURL(url)
uni.showToast({
title:'下载成功'
})
} catch (error) {
uni.showToast({
title: '下载失败'
})
}
}
H5浏览文件直接后台给文件地址即可