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("下载失败!");
}
}