spring boot+angularjs文件下载设置setHeader

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");
               }
           })
       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值