您的位置:首页 > 编程语言 > Java开发

文件下载

2016-03-05 00:00 459 查看
摘要: Java实现文件下载

1. 通过FileInputStream读取文件输入流

public void export(String excelPath, String fileName) throws Exception{

//将文件存到指定位置
//读取目标文件流,转换调用下载
File resultFile = new File(excelPath);
FileInputStream resultFileFi = new FileInputStream(resultFile);
long l = resultFile.length();
int k = 0;
byte abyte0[] = new byte[65000];

// 调用下载
response.setContentType("application/x-msdownload");
response.setContentLength((int) l);
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
while ((long) k < l) {
int j;
j = resultFileFi.read(abyte0, 0, 65000);
k += j;
response.getOutputStream().write(abyte0, 0, j);
}
resultFileFi.close();

//转换成功后,删除临时文件
resultFile.delete();
}

2. 注意getServletContext().getMimeType(fileName),读取文件类型

public void export1(String excelPath, String fileName){
if (request.getParameter("file") != null) {
fileName = request.getParameter("file");
}
System.out.println(ServletActionContext.getServletContext().getMimeType(fileName));
response.setContentType(ServletActionContext.getServletContext().getMimeType(fileName));
response.setHeader("Content-disposition","attachment; filename="+fileName);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream( new FileInputStream(excelPath) );
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
} catch(final IOException e) {
System.out.println ( "出现IOException." + e );
} finally {
if (bis != null)
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
if (bos != null)
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 文件下载