JavaWeb 下载服务上的文件到客户端电脑

此篇博客是下载服务器文件到客户端,包括前端和后端。

刚开始做的时候,我前端使用的是ajax 请求数据到后端,然后在后端做文件转换。不管怎么做,网页都没有半点反应,不会弹出像这样的文件下载提示框

 看了几篇博客后,才发现是ajax请求的问题,于是改成了form表单提交。这个问题就解决了。

直接上干货:

html:

<button type="button" class="form-control" style="background-color: #36648B; font-size: 16px; color: #FFFFFF;" id="print" οnclick="PrintExcel()">列印</button>

 

JS:

function PrintExcel(){  
      if($("#acc_no").val()==""){
            alert("文件编码不能为空!")
            return false;
      }else{
          
          //文件下载的时候  用ajax请求后台,网页没有反应。用form 表单提交能自动的收到流信息,所以这里用form 表单提交更好
          
          var temp_form = document.createElement("form");
            // 设置form属性
            temp_form .action = url;      
            temp_form .target = "_self";
            temp_form .method = "post";       //请求方式
            temp_form .style.display = "none";  
            
            var opt = document.createElement("textarea");    
            opt.name = "acc_no";           
            opt.value = $("#acc_no").val();      //传给后台的值
            temp_form .appendChild(opt);       
            document.body.appendChild(temp_form);
            temp_form .submit();  
      }
}

 

后台:

@RequestMapping(value="/printExcel",method = RequestMethod.POST) 
    @ResponseBody
    public void PrintExcel(@RequestBody String obString,HttpServletRequest request,HttpServletResponse response)  throws Exception {    

         // 输入流
         FileInputStream input = new FileInputStream("D:\ExcelPath\50.xlsx");  //获取服务器上文件

         // 设置头
         resp.setHeader("Content-Type","xlsx");  //我这里是Excel 文件,格式是xlsx类型
         resp.setHeader("Content-Disposition", "50.xlsx");

         // 获取绑定了客户端的流
         ServletOutputStream output = resp.getOutputStream();

         // 把输入流中的数据写入到输出流中
         IOUtils.copy(input,output);
         input.close();    
    }    

此时网页上就能弹出下载提示框。 

如果对你有帮助, 给点赞赏哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值