vue3和tauri直接下载Binary 数组的二进制文件内容到本地

通过发送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)
      })
  })
}

实现的效果:

点击保存后:

猜你喜欢

转载自blog.csdn.net/weixin_44786530/article/details/131719774
今日推荐