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

第一种方法:

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

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

 jsp页面中添加以下代码:安全

  <%服务器

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

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

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

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

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

   

      trycode

      {ci

          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;

          }

      }

%>

相关文章
相关标签/搜索