通过发送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.openLinkconst 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)})})
}
实现的效果:
点击保存后: