您的位置:首页 > Web前端 > AngularJS

spring boot+angularjs文件下载设置setHeader

2017-12-07 12:58 501 查看
1.根据前台传的code,得到对应的文件,这里处理的是excel和word,将文件的后缀名存入“Content-Type”,这里要在得到文件对应的byte[]之前设置setHeader,否则不生效

后端实现:

@RequestMapping(value = "/get-file", method = GET)
@ResponseBody
public void getFile(@RequestParam String majorCode,@RequestParam String minorCode,HttpServletResponse rsp) throws IOException{
String suffix = service.getSuffix(majorCode, minorCode);
byte[] bb = service.getFile(majorCode, minorCode);
if(suffix == null) {
rsp.setHeader("Content-Type",
"null");
}
if(suffix!=null) {
if(suffix.equals("xlsx"))
rsp.setHeader("Content-Type",
"xlsx");
else if(suffix.equals("xls"))
rsp.setHeader("Content-Type",
"xls");
else if(suffix.equals("doc"))
rsp.setHeader("Content-Type",
"doc");
else if(suffix.equals("docx"))
rsp.setHeader("Content-Type", "docx");
else
rsp.setHeader("Content-Type",
"null");
}
rsp.getOutputStream().write(bb);
}


2.HTML加入

文件上传的按钮只显示word和excel这两个类型

<input name="file" data-ngf-select type="file" style="display: none" id="hiddenFile" ng-model="uploadCtrl.file"
ng-show="false" ngf-max-size="{{uploadCtrl.maxFileSize}}" ngf-change="uploadCtrl.invalidFile()"
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword">


3.angularjs

function downloadTemplate(){
statusChangeTypeDao.getFileUrl(vm.item.majorCode, vm.item.minorCode ,function(response,status, headers, config){
if(headers('Content-Type') == "xlsx"){
FileExport.export(response,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;",
"信息.xlsx");
}else if(headers('Content-Type') == "xls"){
FileExport.export(response,"application/vnd.ms-excel;",
"信息.xls");
}else if(headers('Content-Type') == "docx"){
FileExport.export(response,"application/vnd.openxmlformats-officedocument.wordprocessingml.document;",
"信息.docx");
}else{
FileExport.export(response,"application/msword;",
"信息.doc");
}
})
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: