前端下载文件

尝试了两种方法:

1.使用download.js直接下载在浏览器,需用户自己转存文件到文件夹

2.使用window接口的 showSaveFilePicker()API

download.jsshowSaveFilePicker()
优点兼容性强可直接保存到指定文件夹
缺点无法保存到指定文件夹兼容性差且需要安全上下文,window 10,11系统用户较友好
网址http://danml.com/download.htmlhttps://developer.mozilla.org/zh-CN/docs/Web/API/Window/showSaveFilePicker

下载指令:

// 下载download.js
npm install downloadjs
// 下载api
npm install native-file-system-adapter

两种下载方式代码实现如下:

  // 方案一:api下载到指定文件夹
  // 使用 showSaveFilePicker 保存文件

  try {
   const handle = await showSaveFilePicker({
     suggestedName: fileName.value,
     types: [
       {
         description: "JSON files",
         accept: {
           "application/json": [".json"],
         },
       },
     ],
   });
  
   const writable = await handle.createWritable();
   await writable.write(exportJson);
   await writable.close();
   console.log("文件保存成功");
 } catch (error) {
   console.error("文件保存失败:", error);
 }

  // 方案二:download.js下载到浏览器
  //创建一个文本blob对象
  var blob = new Blob([exportJson], { type: "application/json" });
  download(blob, fileName.value);

还有一种常见的下载方法:

// 示例:以下载一个JSON文件为例
  //创建一个文本blob对象
  var blob = new Blob([exportJson], { type: "application/json" });
  //构造下载连接
  const url = URL.createObjectURL(blob);
  //创建下载连接的A标签
  const a = document.createElement("a");
  a.href = url;
  a.download = "export_sample.json";
  //模拟点击下载连接
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
  //释放资源
  URL.revokeObjectURL(url);
};

这种和上面提到的download.js的方式相似,但使用这种方法时,如果是图片、视频、pdf 等格式的文件会直接在浏览器预览,而不是像 docx 、xlsx 一样直接下载。而download.js可以不区分文件格式,全部实现下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别问问就花括号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值