spring boot+angularjs文件下载设置setHeader

来源:互联网 发布:电脑破解软件论坛 编辑:程序博客网 时间:2024/06/11 23:16

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");               }           })       }