在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

文件下载java实现代码

2016-12-20 13:15| 发布者: zhangjf| 查看: 468| 评论: 0

摘要: 1. 通过FileInputStream读取文件输入流 public void export(String excelPath, String fileName) throws Exception{ //将文件存到指定位置 //读取目标文件流,转换调用下载 File r ...

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

  1. public void export(String excelPath, String fileName) throws Exception{
  2. //将文件存到指定位置
  3. //读取目标文件流,转换调用下载
  4. File resultFile = new File(excelPath);
  5. FileInputStream resultFileFi = new FileInputStream(resultFile);
  6. long l = resultFile.length();
  7. int k = 0;
  8. byte abyte0[] = new byte[65000];
  9. // 调用下载
  10. response.setContentType("application/x-msdownload");
  11. response.setContentLength((int) l);
  12. response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
  13. while ((long) k < l) {
  14. int j;
  15. j = resultFileFi.read(abyte0, 0, 65000);
  16. k += j;
  17. response.getOutputStream().write(abyte0, 0, j);
  18. }
  19. resultFileFi.close();
  20. //转换成功后,删除临时文件
  21. resultFile.delete();
  22. }
复制代码

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

  1. public void export1(String excelPath, String fileName){
  2. if (request.getParameter("file") != null) {
  3. fileName = request.getParameter("file");
  4. }
  5. System.out.println(ServletActionContext.getServletContext().getMimeType(fileName));
  6. response.setContentType(ServletActionContext.getServletContext().getMimeType(fileName));
  7. response.setHeader("Content-disposition","attachment; filename="+fileName);
  8. BufferedInputStream bis = null;
  9. BufferedOutputStream bos = null;
  10. try {
  11. bis = new BufferedInputStream( new FileInputStream(excelPath) );
  12. bos = new BufferedOutputStream(response.getOutputStream());
  13. byte[] buff = new byte[2048];
  14. int bytesRead;
  15. while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  16. bos.write(buff,0,bytesRead);
  17. }
  18. } catch(final IOException e) {
  19. System.out.println ( "出现IOException." + e );
  20. } finally {
  21. if (bis != null)
  22. try {
  23. bis.close();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. if (bos != null)
  28. try {
  29. bos.close();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. }
复制代码


最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-8-23 04:34

Copyright 2015-2025 djqfx

返回顶部