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

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

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

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

直接上干货:

html:

 

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

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

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

JavaWeb 下载服务上的文件到客户端电脑_第1张图片

你可能感兴趣的:(javaWeb,服务器文件下载,服务器文件下载)