场景一:返回的是 文件url
let { url } = await $signup_export({ practice_id: this.practiceId });
// 上述代码是获取后端返回的文件路径,按实际情况修改
let arr = url.split('/');
let urlName = arr[arr.length - 1];
uni.downloadFile({
url,
filePath: `${uni.env.USER_DATA_PATH}/${urlName}`, // 指定保存的路径并指定文件名
success: (res) => {
if (res.statusCode === 200) {
uni.openDocument({
filePath: res.filePath,
showMenu: true,
});
}
},
});
注意事项
- 下载文件参考API:uniapp.dcloud.net.cn/api/request…
- 打开文件参考API:uniapp.dcloud.net.cn/api/file/fi…
场景二:返回的是 二进制流、base64等
没有文件url,只有文件本身(二进制流 ArrayBuffer)
let res = await $signup_export({ practice_id: this.practiceId });
let arrayBufferList = res.data; // 二进制文件流
let fileName=`${res.fileName}.${res.fileType}` // 文件名(文件名字和文件类型)
let filePath=`${uni.env.USER_DATA_PATH}/${fileName}`
// 上述代码是获取后端返回的数据,按实际情况修改
let fs = uni.getFileSystemManager() // 全局唯一的文件管理器
fs.writeFile({
filePath, // 指定保存的路径并指定文件名
data: arrayBufferList,
encoding: 'binary',
success(res) {
console.log('写入成功', res);
console.log('文件路径', filePath);
},
fail(res) {
console.log('写入失败', res);
}
})
注意事项
- 如果后端只返回文件的二进制流,那么我们需要让后端再返回文件的名字(非必需,我们可以自己指定)和文件的类型(必须,不告诉文件类型没法写入)
- 写入文件参考API:developers.weixin.qq.com/miniprogram…