Java以流的形式下载文件

Java以流的形式下载文件

 public void downLoad(HttpServletResponse response, File file) {
     try {
         String filename = file.getName();
         // 使用流的形式下载文件
         InputStream fis = new BufferedInputStream(new FileInputStream(file));
         byte[] buffer = new byte[fis.available()];
         fis.read(buffer);
         fis.close();
         // 清空response
         response.reset();

		//设置编码集
         response.setContentType("application/octet-stream;charset=UTF-8");
         //转码文件名
         String fileName = new String(filename.getBytes("gb2312"), "iso8859-1");
         //设定头部请求
         response.setHeader("Content-disposition", "attachment;filename=" + fileName);
         OutputStream outputStream = response.getOutputStream();
         outputStream.write(buffer);
         outputStream.flush();
         outputStream.close();
     } catch (Exception e) {
         e.printStackTrace();
     }
 }

使用from表单实现文件流的下载

//删除上一次创建的iframe,随着下载次数的增多页面上的iframe会增多
var form= $("#form")
if(form){
    $("#form").remove();
}
var $downForm= $("<form id='form' method='get'>" +
        "<input id='id' name='id' value='"+rows[0].id+"' type='hidden'>" +
        "</form>");
$downForm.attr("action",url);
 
$(document.body).append($downForm);
//提交表单,实现下载
$downForm.submit();

使用iframe实现文件流的下载

//删除上一次创建的iframe,随着下载次数的增多页面上的iframe会增多
var myframe = $("myframe ")
if(myframe){
    myframe.remove();
}
downloadFile(url);
function downloadFile(url) {   
   try{ 
        var frame= document.createElement("myframe");   
        frame.src = url+'?id=1';   
        frame.style.display = "none";   
        document.body.appendChild(frame);   
    }catch(e){ 
        layer.msg("下载失败!");
    }     
}

猜你喜欢

转载自blog.csdn.net/u010606701/article/details/103608499