转载

浅析JSP文件下载的几种不同方式

1.最直接最简单的JSP文件下载,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。

2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(JSP文件下载示例如下)

  1. <%  
  2.  response.setContentType(fileminitype);  
  3.  response.setHeader("Location",filename);  
  4.  response.setHeader("Cache-Control", "max-age=" + cacheTime);  
  5.  response.setHeader("Content-Disposition", "attachment; filename=" + filename); //filename应该是编码后的(utf-8)  
  6.  response.setContentLength(filelength);  
  7.  OutputStream outputStream = response.getOutputStream();  
  8.  InputStream inputStream = new FileInputStream(filepath);  
  9.  byte[] buffer = new byte[1024];  
  10.  int i = -1;  
  11.  while ((i = inputStream.read(buffer)) != -1) {  
  12.   outputStream.write(buffer, 0, i);  
  13.   }  
  14.  outputStream.flush();  
  15.  outputStream.close();  
  16.  inputStream.close();  
  17.  outputStream = null;  
  18.  
  19. %> 

3.既然是JSP文件下载的话,还有一种JSP文件下载方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。

servlet端示例  

  1. public void service(HttpServletRequest req, HttpServletResponse res)  
  2.            throws ServletException, IOException {  
  3.        res.setContentType(" text/plain ");  
  4.        OutputStream outputStream = null;  
  5.        try {  
  6.            outputStream = res.getOutputStream();  
  7.            popFile(srcFile, outputStream)) ;//把文件路径为srcFile的文件写入到outputStream中。  
  8.        } catch (IOException e) {  
  9.            e.printStackTrace();  
  10.        }  
  11.    }  

JApplet端示例

URLConnection con;

正文到此结束
Loading...