j2ee下载的实现 原文 http://code.google.com/p/helloj2ee/wiki/j2ee_download
所谓下载就是
- 向浏览器发个头信息,说明是下载文件,不是输出html文本,以及说明文件名,文件类型等
- 将下载内容发给浏览器
做法大概有这么几种:
- 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() 下载
来了解详情