Java实现文件下载功能

  1. /*
  2. 下载的主方法.
  3. */
  4. public ActionForward fileDownLoad(ActionMapping mapping,
  5.    HttpServletRequest request, HttpServletResponse response)
  6.    throws ServletException {
  7.   String fileName = null;// 名称
  8.   
  9.   String realpath = "D:/crmSite/cdoc/";
  10.   
  11.   realpath = "D:/crmSite/cdoc/"
  12.     + adform.getAdMat().substring(1);
  13.   
  14.   realpath = StrUtils.replace(realpath, "//", "/");
  15.   
  16.   BufferedInputStream bis = null;
  17.   BufferedOutputStream bos = null;
  18.   OutputStream fos = null;
  19.   InputStream fis = null;
  20.   fileName = realpath.substring(realpath.lastIndexOf("/") + 1, realpath.length());
  21.   //System.out.println(realpath);
  22.   try {
  23.    response.setContentType(this.getContentType(fileName));
  24.    response.setHeader("Content-disposition""attachment;filename="
  25.      + fileName);
  26.    fis = new FileInputStream(realpath);
  27.    bis = new BufferedInputStream(fis);
  28.    fos = response.getOutputStream();
  29.    bos = new BufferedOutputStream(fos);
  30.    int bytesRead = 0;
  31.    byte[] buffer = new byte[5 * 1024];
  32.    while ((bytesRead = bis.read(buffer)) != -1) {
  33.     bos.write(buffer, 0, bytesRead);// 将文件发送到客户端
  34.    }
  35.    bos.close();
  36.    bis.close();
  37.    fos.close();
  38.    fis.close();
  39.   } catch (IOException e) {
  40.    response.reset();
  41.    e.printStackTrace();
  42.   } finally {
  43.    try {
  44.     if (fos != null) {
  45.      fos.close();
  46.     }
  47.     if (bos != null) {
  48.      bos.close();
  49.     }
  50.     if (fis != null) {
  51.      fis.close();
  52.     }
  53.     if (bis != null) {
  54.      bis.close();
  55.     }
  56.    } catch (IOException e) {
  57.     System.err.print(e);
  58.    }
  59.   }
  60.   return null;
  61.  }
  62. /*
  63. 设置文件类型
  64. */
  65.  private String getContentType(String fileName) {
  66.   String fileNameTmp = fileName.toLowerCase();
  67.   String ret = "";
  68.   if (fileNameTmp.endsWith("txt")) {
  69.    ret = "text/plain";
  70.   }
  71.   if (fileNameTmp.endsWith("gif")) {
  72.    ret = "image/gif";
  73.   }
  74.   if (fileNameTmp.endsWith("jpg")) {
  75.    ret = "image/jpeg";
  76.   }
  77.   if (fileNameTmp.endsWith("jpeg")) {
  78.    ret = "image/jpeg";
  79.   }
  80.   if (fileNameTmp.endsWith("jpe")) {
  81.    ret = "image/jpeg";
  82.   }
  83.   if (fileNameTmp.endsWith("zip")) {
  84.    ret = "application/zip";
  85.   }
  86.   if (fileNameTmp.endsWith("rar")) {
  87.    ret = "application/rar";
  88.   }
  89.   if (fileNameTmp.endsWith("doc")) {
  90.    ret = "application/msword";
  91.   }
  92.   if (fileNameTmp.endsWith("ppt")) {
  93.    ret = "application/vnd.ms-powerpoint";
  94.   }
  95.   if (fileNameTmp.endsWith("xls")) {
  96.    ret = "application/vnd.ms-excel";
  97.   }
  98.   if (fileNameTmp.endsWith("html")) {
  99.    ret = "text/html";
  100.   }
  101.   if (fileNameTmp.endsWith("htm")) {
  102.    ret = "text/html";
  103.   }
  104.   if (fileNameTmp.endsWith("tif")) {
  105.    ret = "image/tiff";
  106.   }
  107.   if (fileNameTmp.endsWith("tiff")) {
  108.    ret = "image/tiff";
  109.   }
  110.   if (fileNameTmp.endsWith("pdf")) {
  111.    ret = "application/pdf";
  112.   }
  113.   return ret;
  114.  }
  115. //调用时只需要用URL或提交的方式提交到action即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值