注意请求时要设置responseType,不加会中文乱码,被这个坑困扰了大半天。。。
axios post请求:
    download(index,row){
var ts = this;
axios.post(this.paths.baseURL+'file/downloadFile',
{path:row.zurl},
{responseType: 'blob'}
).then(msg => {
console.log(msg.data)
let link = document.createElement("a");
link.style.display = "none";
link.href = window.URL.createObjectURL(new Blob([msg.data]));
link.setAttribute("download",row.zurl.substring(row.zurl.lastIndexOf("/")+1));//完整文件名称
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(link.href);
document.body.removeChild(link);
}).catch(error =>{
ts.$message.error('下载文件失败')
})
}
后台接口:

    @RequestMapping(value = "downloadFile",method = RequestMethod.POST,produces = {"application/json;charset = utf-8"})
@ApiOperation(notes = "下载",value = "下载")
// @RequiresPermissions("file:download")
public ResponseEntity<byte[]> downloadFile(@RequestBody Map<String,Object> map) throws IOException {
String path = map.get("path").toString();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment",path.substring(path.lastIndexOf("/")+1));
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(path)),headers, HttpStatus.CREATED);
}
axios get请求下载
        axios.get(this.paths.baseURL+'risk/excelRisk',
{responseType: 'blob'}
).then((msg) => {
console.log(msg)
let url = window.URL.createObjectURL(new Blob([msg.data]));
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', '未评估风险数据.xls')
document.body.appendChild(link)
link.click()
}).catch((error) => {
console.log(error)
this.$message({
type:'error',
message:'服务器异常'
})
})
    @GetMapping(value = "excelRisk",produces = {"application/octet-stream;charset=utf-8"})
//@RequiresRoles("risk:list")
public void excelRisk(HttpServletResponse response) {
try {
Map<String,Object> map = new HashMap<String,Object>();
Workbook workbook = RiskExcel.wpgRisk(riskService.excelRisk(map),"excelTemplate/risk_1.xlsx");
OutputStream out=response.getOutputStream();
response.setHeader("Content-Type","application/vnd.ms-excel");
response.addHeader("Content-Disposition","attachment;filename=为评估数据.xmls");
response.setContentType("application/octet-stream");
response.setCharacterEncoding("UTF-8");
workbook.write(out);
} catch (Exception e) {
e.printStackTrace();
}
}
 

vue axios post请求下载文件,后台springmvc完整代码的更多相关文章

  1. vue element多文件多格式上传文件,后台springmvc完整代码

       template:        <el-upload               class="upload-demo"               ref=&quo ...

  2. 如何使用post请求下载文件

    使用get请求下载文件非常简便,但是get请求的url有长度和大小的限制,所以当请求参数非常多时无法满足需求,所以改成post请求const res = await fetch('xxxxxxxxx' ...

  3. springboot整合vue实现上传下载文件

    https://blog.csdn.net/yhhyhhyhhyhh/article/details/89888953 文章目录 springboot整合vue实现上传下载文件 1上传下载文件api文 ...

  4. axios通过post请求下载文件/图片

    我们平常下载文件一般都是通过get请求直接访问进行下载, 但是当有特殊情况如权限控制之类的会要求我们通过post请求进行下载,这时就不一样了, 具体方法是通过协调后端,约定返回的文件流,请求的resp ...

  5. 把页面上的图表导出为pdf文件,分享一种请求下载文件的方法

    最近客户提出一个需求,就是把页面上的图表导出为pdf文件. 找了很多资料.终于有了点头绪.最主要是参考了HighCharts的做法.http://www.hcharts.cn/ 实现原理:把页面图表的 ...

  6. vue axios get请求参数为json对象 而非字符串形式

    axios get请求方式 传递给后台的参数都是字符串下形式,无法传递json对象 或数组对象等    post请求方式则可以实现,   但若后台接口要求必须用get方式传递对象给后台,需要装插件,实 ...

  7. 细说vue axios登录请求拦截器

    当我们在做接口请求时,比如判断登录超时时候,通常是接口返回一个特定的错误码,那如果我们每个接口都去判断一个耗时耗力,这个时候我们可以用拦截器去进行统一的http请求拦截. 1.安装配置axios cn ...

  8. vue axios 数据请求实现

    1.安装nginx npm install axios --save-dev cnpm install axios --save-dev 使用淘宝镜像 保存依赖文件到本地 装好了.packjson.j ...

  9. post请求下载文件,获取Content-Disposition文件名

    1.post下载文件代码,doload方法 import request from "../../src/utils/request"; import { API } from & ...

随机推荐

  1. 动态规划-Minimum Distance to Type a Word Using Two Fingers

    2020-01-12 18:28:13 问题描述: 问题求解: 本题还是非常困难的,至少我在看到这个题目的时候是没有想到怎么解决的.我当时联想到的题目是那条grid走两遍的题目,那条题目也很麻烦,使用 ...

  2. Contest 153

    2019-09-14 23:16:25 总体感受:节奏尚可,难度尚可.然而还是卡在了最后一题,完全没有想到使用dp. 注意点: 1)Contest的最后一题往往是DP,Graph,这个敏感度需要提高: ...

  3. angularjs中$parse的用法

    转载自:https://umur.blog/2014/02/25/advanced-angular-parse/ 高级Angular:$ parse 如果你想加强你的AngularJS知识,$ par ...

  4. VBScript - 动态 Array 实现方法大全!

    记录一些方法,关于 VBScript 中,动态 Array 的实现 ,也适用于 VBA, 很久以前,写 VBA 的时候,就觉得使用 Array 很不方便,因为大小固定, 当时想的是,要是 Array ...

  5. C# Protobuf如何做到0分配内存的序列化

    题目很简单, 就是IMessage对象怎么变成Byte[] 答案1: msg.ToByteArray() 这肯定不符合我们的要求 答案2: using var memoryStream = new M ...

  6. Windows 7集成IE11(离线安装包、补丁)

    当Win7系统需要集成IE11时,我们需要提前打入6个补丁 KB2731771.KB2786081.KB2834140.KB2670838.KB2729094.KB2533623 32位 ★百度网盘 ...

  7. JLabel有点感觉了,码上

    Java中Label的姿势 Jabel与JDialog窗口的是否可见可做为弹窗. 设置字体颜色 jl.setForeground(Color.ORANGE);//设置字体颜色 设置字体与大小 jl.s ...

  8. 3-1. 基于epoll架构的视频采集端设计

    精通epoll架构 epoll:Linux中最优秀的多路复用机制! 与select .poll区别 1.select和poll没有太大区别,除了select有文件描述符限制(1024个).select ...

  9. Chrome截图截满滑动栏,QQ截长屏,录屏

    1.Chrome截图截满滑动栏 一般我们截图都是用QQ的Ctrl+shift+A,但是网页不好截,这里我们可以用Chrome控制台来截全网页: F12或Ctrl+shift+i打开控制台: 点击一下控 ...

  10. PTA | 1020. 月饼 (25)

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...