j2ee下载的实现

j2ee下载的实现 原文 http://code.google.com/p/helloj2ee/wiki/j2ee_download

所谓下载就是

  1. 向浏览器发个头信息,说明是下载文件,不是输出html文本,以及说明文件名,文件类型等
  2. 将下载内容发给浏览器

做法大概有这么几种:

  • 1、 tomcat本身对项目下的文件直接提供下载功能,在tomcat/conf/web.xml里有类似很多这种定义
    <mime-mapping> 
        <extension>zip</extension> 
        <mime-type>application/zip</mime-type> 
    </mime-mapping>

,那么如果你在你的项目下有个foo.zip,那么在浏览器里直接输入 http://localhost:8080/foo.zip ,这时tomcat就会执行上述的两个步骤。浏览器会得到头信息:有文件要下载,文件名是foo.zip,文件类型是application/zip,即可以使用支持zip格式文件的应用程序打开等头信息。

  • 2、 如果要下载的文件不是在你项目的目录下,比如在c:/测试.doc,那么你可以这么写程序,比如叫d.jsp。
 response.setContentType("application/msword"); 
 response.setHeader("Content-Disposition",  
 "attachment;filename=\"" + new String("测试.doc".getBytes("GBK"),"iso-8859-1") + "\""); 
 

FileInputStream in = new FileInputStream("c:/测试.doc");   byte[] bytes = new byte[1024];   while((m=in.read(bytes))!=-1){          response.getOutputStream().write(bytes, 0, m);   }   in.close();   

那么访问http://localhost:8080/d.jsp 的时候就会下载c:/测试.doc了。

  • 3、 下载还有个是否支持断点续传的问题,可以搜索
response.setHeader("Accept-Ranges", "bytes");

以了解细节

  • 4、 struts2等也有对下载的直接支持,可以搜索:
struts2 public InputStream getInputStream()  下载

来了解详情

猜你喜欢

转载自helloj2ee.iteye.com/blog/1679078