vue下载流文件

本文介绍了在JavaScript中如何使用axios库下载流文件,特别是处理PDF时需要将responseType设置为'arraybuffer'。同时,详细列出了各种Microsoft Office文件的正确MIME类型,确保HTTP内容流的正确解析。通过创建Blob对象并利用a标签实现文件下载,文章提供了完整的代码示例。
摘要由CSDN通过智能技术生成

下载流文件时,方法要设置返回格式responseType:‘arraybuffer’ ,否则下载会报错"xml 解析错误:格式不佳 位置:* 行 1,列 9:"

js文件定义方法

//定义请求方法
export function downloadPDF(id) {
  return request({
    url: '/url' ,
    responseType:'arraybuffer',
    method: 'get'
  })
}

*.vue文件调用方法,实现下载

export default {
	data() {
	    return {
	    }
	 },
	 methods: {
		 //定义下载方法
	 	downloadPDFFile(){
	 		let id="";
			downloadPDF(id).then(res => {
					let fileName="文件名";
					let fileType="pdf";//文件类型,excel:vnd.ms-excel
					let blob = new Blob([res], {type: 'application/${fileType};charset=utf-8'});
					let downloadElement = document.createElement('a');
					let href = window.URL.createObjectURL(blob);
					downloadElement.href = href;
					downloadElement.download = fileName;
					document.body.appendChild(downloadElement);
					downloadElement.click();
					document.body.removeChild(downloadElement);
					window.URL.revokeObjectURL(href);
			});
		}
	 }
}

**各种文件格式:**

For BIFF .xls files

application/vnd.ms-excel

For Excel2007 and above .xlsx files

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Here are the correct Microsoft Office MIME types for HTTP Content Streaming:

Extension MIME Type
.doc      application/msword
.dot      application/msword

.docx     application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx     application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm     application/vnd.ms-word.document.macroEnabled.12
.dotm     application/vnd.ms-word.template.macroEnabled.12

.xls      application/vnd.ms-excel
.xlt      application/vnd.ms-excel
.xla      application/vnd.ms-excel

.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx     application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsm     application/vnd.ms-excel.sheet.macroEnabled.12
.xltm     application/vnd.ms-excel.template.macroEnabled.12
.xlam     application/vnd.ms-excel.addin.macroEnabled.12
.xlsb     application/vnd.ms-excel.sheet.binary.macroEnabled.12

.ppt      application/vnd.ms-powerpoint
.pot      application/vnd.ms-powerpoint
.pps      application/vnd.ms-powerpoint
.ppa      application/vnd.ms-powerpoint

.pptx     application/vnd.openxmlformats-officedocument.presentationml.presentation
.potx     application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx     application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppam     application/vnd.ms-powerpoint.addin.macroEnabled.12
.pptm     application/vnd.ms-powerpoint.presentation.macroEnabled.12
.potm     application/vnd.ms-powerpoint.template.macroEnabled.12
.ppsm     application/vnd.ms-powerpoint.slideshow.macroEnabled.12

.mdb      application/vnd.ms-access


下载Excel文件是指通过Vue前端框架实现在网页上实时下载Excel文件的功能。为了实现这一功能,可以通过以下步骤: 1. 在Vue组件中使用axios或者其他网络请求库,向后端发送请求获取Excel文件数据。 2. 后端接收到请求后,根据接口要求生成Excel文件,并将文件返回给前端。 3. 前端接收到Excel文件数据后,通过Blob对象和URL.createObjectURL方法创建可供下载的Excel文件链接。 4. 在Vue组件中使用a标签或者其他方式,将Excel文件链接绑定到下载按钮或者表格中。用户点击下载按钮即可下载Excel文件。 在编写相关代码时,需要注意文件的处理、请求的发送和响应的处理。具体示例代码如下:(以axios为例) ```javascript // Vue组件中发送请求 <template> <div> <button @click="downloadExcel">下载Excel</button> </div> </template> <script> import axios from 'axios'; export default { methods: { downloadExcel() { axios({ method: 'get', url: 'http://your-backend-api-url/export-excel', responseType: 'blob', // 告诉axios返回的数据是二进制 }) .then(response => { const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'excel.xlsx'); document.body.appendChild(link); link.click(); }) } } } </script> ``` 以上就是使用Vue下载Excel文件的基本方法。通过这种方式,用户可以在网页上快速方便地下载后端生成的Excel文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值