请问微信小程序这种pdf文件的保存,能单独加按钮点击保存吗?
而不是打开一个这种文件预览页面 点击下载保存,想在小程序加个下载按钮,直接保存pdf文件,而不是进入这种预览页面,然后还要点击右上角三个点去保存
回复
1个回答

test
2024-06-20
试试看 wx.saveFileToDisk 这个API?
这里是官方提供的一个Demo 👉 开发指引 / 对象存储 / 微信小程序 / 下载文件
async onLoad() {
const result = await this.downloadFile('cloud://test.png',function(res){
console.log(`下载进度:${res.progress}%,已下载${res.totalBytesWritten}B,共${res.totalBytesExpectedToWrite}B`)
// if(res.progress > 50){ // 测试文件下载一半就终止下载
// return false
// }
})
wx.saveFile({
tempFilePath: result.tempFilePath
}).then(console.log)
},
/**
* 下载微信云托管对象存储到本地
* @param {*} fileID 对象存储文件ID
* @param {*} onCall 上传回调,文件上传过程监听,返回false时会中断上传
*/
downloadFile(fileID, onCall = () => {}) {
return new Promise((resolve, reject) => {
const task = wx.cloud.downloadFile({
fileID,
success: res => resolve(res),
fail: e => {
const info = e.toString()
if (info.indexOf('abort') != -1) {
reject(new Error('【文件下载失败】中断下载'))
} else {
reject(new Error('【文件下载失败】网络或其他错误'))
}
}
})
task.onProgressUpdate((res) => {
if (onCall(res) == false) {
task.abort()
}
})
})
}
})
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容