通过发送url请求,直接获取到一个文件的Binary 数组内容,然后通过tauri的api:writeBinaryFile保存文件到本地电脑。
发送请求的时候,要加上响应类型:responseType: ResponseType.Binary
然后等返回的响应内容:发现是一个Binary 数组
这个时候去查看writeBinaryFile这个api,发现刚好支持:
fs | Tauri Apps
所以我们可以直接将这个返回的内容丢到writeBinaryFile里面就可以了。
但是我们还需要获取文件下载时候,要保存到的路径,这个就用tauri的save dialog api就可以了:dialog | Tauri Apps
然后获取到文件的保存路径,就可以发送请求下载内容了:
const downFile = async (file?: any) => {
var fileURL = file.openLink ? file.openLink : rightClickItem.openLink
const basePath = await path.downloadDir() + `/${file.name ? file.name : rightClickItem.name}`;
let selPath = await dialog.save({
title: `保存文件: ${file.name ? file.name : rightClickItem.name}`,
defaultPath: basePath,
filters: [{
name: '*',
extensions: ['*']
}]
});
console.log("selPath----", selPath);
// 开始发送下载请求
selPath && fileApi.downFile(fileURL).then(async res => {
console.log("downRes----", res);
writeBinaryFile({ contents: res.data as any, path: `${selPath}` })
.then(res => {
ElMessage({
message: `${file.name ? file.name : rightClickItem.name}保存成功`,
type: 'success',
})
}).catch(err => {
ElMessage.error('文件保存失败:' + err)
})
})
}
实现的效果:
点击保存后: