最近在做ant-design-vue框架的后台项目,需要用了一下的下载导入功能

fetch下载文档流

1.接收的数据需要先进行response.json()

如下:
fetch(url,xxx).then(response=>{return response.json()}).then(res=>{console.log(res);})
这是最常用的fetch的用法,res就是接口返回的数据了。

如果是文档流,则需要将response.json()改为response.blob(),也就是如下:
fetch(url,xxx).then(response=>{return response.blob()}).then(res=>{console.log(res)})

2.通过response.blob()转化后可以拿到文档流

3.下载文档流可以通过创建a标签的形式来处理

const link = document.createElement("a");
let blob = new Blob([res], {type:".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel",
});
link.href = URL.createObjectURL(blob);
link.download = `order.xlsx`;
link.click();

fetch实现下载文档流——代码

var param = this.filterParams(params);
var baseUrl = process.env.VUE_APP_API_BASE_URL_API;
var myHeaders = new Headers();
var Authorization = Cookie.get("Authorization");
myHeaders.append("Authorization", Authorization);
var requestOptions = {method: "get",headers: myHeaders,redirect: "follow",
};
fetch(`${baseUrl}/api/sheet-metal/orders/export?${param}`, requestOptions).then((response) => {return response.blob();}).then((res) => {const link = document.createElement("a");
let blob = new Blob([res], {type:".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'",
});
link.href = URL.createObjectURL(blob);
link.download = `order.xlsx`;
link.click();}).catch((error) => console.log("error", error));

axios实现下载文档流

1.要在配置文件中添加responseType:'blob',不是放在headers里面,是配置文件的第一层,其他的跟fetch的一样

let params = {...this.queryParam,...this.pagination,
};
//接口地址为exportOrder
exportOrder(params, { responseType: "blob" }).then((res) => {const link = document.createElement("a");let blob = new Blob([res], {type:".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'",});link.href = URL.createObjectURL(blob);link.download = `order.xlsx`;link.click();
});

fetch实现导入xlsx文件

1.我这边的接口需要配置用户信息,因此用到了authorizationcookie的信息,需要配置的关键是redirect:'follow'

2.new FormData后传入的StreamContent是需要跟后端保持一致的,并不是随便的一个名称

import Cookie from "js-cookie";
...
var baseUrl = process.env.VUE_APP_API_BASE_URL_API;
var myHeaders = new Headers();
var Authorization = Cookie.get("Authorization");
myHeaders.append("Authorization", Authorization);
var formdata = new FormData();
formdata.append("StreamContent", new Blob([files]));
var requestOptions = {method: "post",headers: myHeaders,body: formdata,redirect: "follow",
};
fetch(`${baseUrl}/api/sheet-metal/orders/${this.detailObj.orderNo}/import?BomType=${this.fileType}`,requestOptions
).then((response) => {//其他操作}).catch((error) => console.log("error", error));

axios导入xlsx文件

1、需要配置headers的两个参数才可以,一定要注意,否则文件导入会失败

var formdata = new FormData();
formdata.append("StreamContent", new Blob([files]));
importFile(this.detailObj.orderNo, this.fileType, formdata, {Headers: {"Content-Type": "multipart/form-data",withCredentials: true,},
}).then((res) => {//其他操作
});

下载vue项目中的static静态文件

1.这个方法也是下载文档流的方式,不过要注意路径,直接使用static/xxx的路径即可。

let a = document.createElement("a");
if (type == 0) {a.href = `static/lingjian.xlsx`;a.download = "零件工艺表模板";
} else {a.href = `static/peijian.xlsx`;a.download = "配件工艺表模板";
}
a.target = "_blank";
a.click();
a.remove();

完成!!!

fetch的详细介绍

fetch详细介绍:https://www.cnblogs.com/cmyoung/p/8573244.html

js 实现文件下载——文档流形式和本地文件下载——基础积累相关推荐

  1. vue-pdf插件实现pdf文档预览(自动分页预览)——基础积累

    vue-pdf插件的使用--基础积累 使用vue-pdf插件实现如下效果图: 实现功能:1.多个pdf预览,2.获取页码,每个pdf文档实现分页预览功能 实现步骤如下: 1.npm安装 在根目录下输入 ...

  2. pdf.js在线查看(文档流/地址)

    pdf.js在线查看(文档流/地址) 工作中需要在移动端在线查看pdf文件,但由于pdf文件存放在第三方的服务器中,由于各种原因无法直接返回pdf文件地址给前台,后来确定返给前台是一个base64的流 ...

  3. 小程序-记一次二进制文档流文件下载功能;

    原因: 项目中遇到后端返回二进制文档流文件格式,正常下用下面方式可直接可以下载url: // 下载文件资源到本地.客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 (本地路径),单 ...

  4. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,...

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  5. CSS文档流与块级元素和内联元素

    文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不 ...

  6. html脱离标准文档流,关于css脱离标准文档流的两种方式

    所谓脱离标准文档流就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位. 不浮动的盒子会无视浮动的盒子,假使现有两个盒子,一个浮动一个不浮动,则浮动的盒子会覆 ...

  7. css盒子模型、文档流、相对与绝对定位、浮动与清除模型

    一.CSS中的盒子模型 标准模式和混杂模式(IE).在标准模式下浏览器按照规范呈现页面:在混杂模式下,页面以一种比较宽松的向后兼容的方式显示.混杂模式通常模拟老式浏览器的行为以防止老站点无法工作. h ...

  8. HTML 文档流和文本流的理解

    文本流,概括地说其实就是一系列字符,是文档的读取和输出顺序,也就是我们通常看到的由左到右.由上而下的读取和输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而position属性可以将元素从 ...

  9. 前端基础-CSS如何布局以及文档流,对于新手来说,特别有用

    一. 网页布局方式 1.什么是网页布局方式 布局可以理解为排版,我们所熟知的文本编辑类工具都有自己的排版方式 比如word,nodpad++等等 而网页的布局方式指的就是浏览器这款工具是如何对网页中的 ...

  10. (前端)html与css css 15、标准文档流

    标准文档流 常用的Word文档就是一个经典的标准文档流,内容必须是从上往下,从左往右书写的,有一个光标控制,前面的大小或者内容发生变化,后面的内容会跟着发生一些位置变化. 制作的html网页就是一个标 ...

最新文章

  1. 命题思路或将转型,命题方向路在何方
  2. markdownpad2 html渲染组件出错_Day68 Django forms组件
  3. html怎么消除打印的进纸,打印机缺纸状态怎么消除?
  4. 飞畅科技-工业交换机电源故障初探
  5. getsockname函数与getpeername函数的使用
  6. Vector:动态数组的使用和说明
  7. 我的程序都是这样命名的:openeim001
  8. 程序员的自我修养(2)——计算机网络
  9. MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析
  10. bug君你好啊之访问servlet时出现此程序可以连接到 Web 服务器,但是因为地址问题无法找到该网页。
  11. elementUI中input的使用
  12. 大型架构之科普工具篇
  13. 【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】
  14. SQL order by的用法
  15. 在线随机图片与网易云音乐解析API网页源码
  16. 净推荐值NPS(Net Promoter Score)
  17. 33. Pandas计算同比环比指标的3种方法
  18. ffmpeg限制文件大小php,ffmpeg将音频比特率限制为128kb / s [关闭]
  19. python除数为0报错_python——异常
  20. Ubuntu 新加硬盘并挂载到home目录下

热门文章

  1. Installing vipm-17.0.2018-linux
  2. 电池SOC仿真系列-Battery模块
  3. Window笔记本触摸板手势大全
  4. python cryptography key加密_python加密解密库cryptography使用openSSL生成的密匙加密解密...
  5. linux版百度导航软件,百度导航2019新版
  6. 软件测试技术课后习题:第4章白盒测试-广东高等教育出版社,主编杨胜利
  7. Unity 手机VR GoogleVR 详细配置教程
  8. AI——六(图层、蒙版)
  9. 数据结构之队列(链式队列)的基本操作与实现
  10. Git | git的简单使用教程