前端:vue+elementUI
后端:springCloud
前端请求方式 : ajax请求
this.$.ajax({ url :this.url + "/", type : 'post', data : formData, contentType: false, processData: false, xhrFields: {withCredentials: true, responseType:'arraybuffer'}, headers : {'Access-Control-Allow-Origin': '*', "Authorization": this.ajaxRequest.getToken()}, success: function (res, textStatus, request) { var downloadFile = document.createElement('a'); let blob = new Blob([res], {type : "application/vnd.ms-excel;charset=UTF-8"}); downloadFile.href = window.URL.createObjectURL(blob); console.log(request.getResponseHeader('Content-disposition')); downloadFile.download = decodeURI(request.getResponseHeader('Content-disposition').split('filename=')[1] ); downloadFile.click(); window.URL.revokeObjectURL(downloadFile.href); }, error : function (res) { console.log(res) } })后端处理 :导出文件处理
// 输出Excel文件 OutputStream out = null; out = response.getOutputStream(); response.reset(); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF8")); response.setContentType("application/vnd.ms-excel; charset=utf-8"); // 输出Excel内容,生成Excel文件 wb.write(out);