-JavaEE- javaEE中实现文件上传下载

第一种方法:

jsp中实现文件下载的最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>。但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不 安全的因素。

第二种方法:采用RequestDispatcher的方式进行

 jsp页面中添加如下代码:

  <%

      String filedownload = "/要下载的文件名";     //即将下载的文件的相对路径

      String filedisplay = "最终要显示给用户的保存文件名";       //下载文件时显示的文件保存名称

      filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");

       response.setContentType("application/x-download");          //设置为下载application/x-download

      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

   

      try

      {

          RequestDispatcher dis = application.getRequestDispatcher(filedownload);

          if(dis!= null)

          {

              dis.forward(request,response);

          }

          response.flushBuffer();

      }

      catch(Exception e)

      {

          e.printStackTrace();

      }

      finally

      {

    

      }

%>

注意:

1.String filenamedownload = "/Word/作文.doc";指的是即将下载的文件的相对路径,表示作文.doc文件放在工程下的Word文件夹内,一定要注意"/Word/作文.doc",Word前面一定要有“/”,不能写成String filenamedownload = "Word/作文.doc";

2.RequestDispatcher下载方式更为简单,但是缺点在于:下载的文件必须放在工程的内部,application.getRequestDispatcher()方法的参数也必须是相对路径。

 

 

 <%@page language="java" contentType="application/x-msdownload"    pageEncoding="gb2312"%>

<%

      //关于文件下载时采用文件流输出的方式处理:

      response.reset();//可以加也可以不加

      response.setContentType("application/x-download");

      String filedownload = "想办法找到要提供下载的文件的物理路径+文件名";

      String filedisplay = "给用户提供的下载文件名";

      filedisplay = URLEncoder.encode(filedisplay,"UTF-8");

      response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

 

      OutputStream outp = null;

      FileInputStream in = null;

      try

      {

          outp = response.getOutputStream();

          in = new FileInputStream(filenamedownload);

 

          byte[] b = new byte[1024];

          int i = 0;

 

          while((i = in.read(b)) > 0)

          {

              outp.write(b, 0, i);

          }

          outp.flush();

      }

      catch(Exception e)

      {

          System.out.println("Error!");

          e.printStackTrace();

      }

      finally

      {

          if(in != null)

          {

              in.close();

              in = null;

          }

          if(outp != null)

          {

              outp.close();

              outp = null;

          }

      }

%>

转载于:https://my.oschina.net/jimiao/blog/747884

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值