`
jamesby
  • 浏览: 383905 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

文件下载Servlet

    博客分类:
  • Java
阅读更多
package com.jamesby.action;

public class FileDownloadServlet extends HttpServlet {
	private static Log log = LogFactory.getLog(FileDownloadServlet.class);
	private static HashMap _MIME_TYPE_MAP = new HashMap();
	static {
		_MIME_TYPE_MAP.put("ez", "application/andrew-inset");
		_MIME_TYPE_MAP.put("hqx", "application/mac-binhex40");
		_MIME_TYPE_MAP.put("cpt", "application/mac-compactpro");
		_MIME_TYPE_MAP.put("doc", "application/msword");
		_MIME_TYPE_MAP.put("bin", "application/octet-stream");
		_MIME_TYPE_MAP.put("dms", "application/octet-stream");
		_MIME_TYPE_MAP.put("lha", "application/octet-stream");
		_MIME_TYPE_MAP.put("lzh", "application/octet-stream");
		_MIME_TYPE_MAP.put("exe", "application/octet-stream");
		_MIME_TYPE_MAP.put("class", "application/octet-stream");
		_MIME_TYPE_MAP.put("so", "application/octet-stream");
		_MIME_TYPE_MAP.put("dll", "application/octet-stream");
		_MIME_TYPE_MAP.put("oda", "application/oda");
		_MIME_TYPE_MAP.put("pdf", "application/pdf");
		_MIME_TYPE_MAP.put("ai", "application/postscript");
		_MIME_TYPE_MAP.put("eps", "application/postscript");
		_MIME_TYPE_MAP.put("ps", "application/postscript");
		_MIME_TYPE_MAP.put("smi", "application/smil");
		_MIME_TYPE_MAP.put("smil", "application/smil");
		_MIME_TYPE_MAP.put("mif", "application/vnd.mif");
		_MIME_TYPE_MAP.put("xls", "application/vnd.ms-excel");
		_MIME_TYPE_MAP.put("ppt", "application/vnd.ms-powerpoint");
		_MIME_TYPE_MAP.put("wbxml", "application/vnd.wap.wbxml");
		_MIME_TYPE_MAP.put("wmlc", "application/vnd.wap.wmlc");
		_MIME_TYPE_MAP.put("wmlsc", "application/vnd.wap.wmlscriptc");
		_MIME_TYPE_MAP.put("bcpio", "application/x-bcpio");
		_MIME_TYPE_MAP.put("vcd", "application/x-cdlink");
		_MIME_TYPE_MAP.put("pgn", "application/x-chess-pgn");
		_MIME_TYPE_MAP.put("cpio", "application/x-cpio");
		_MIME_TYPE_MAP.put("csh", "application/x-csh");
		_MIME_TYPE_MAP.put("dcr", "application/x-director");
		_MIME_TYPE_MAP.put("dir", "application/x-director");
		_MIME_TYPE_MAP.put("dxr", "application/x-director");
		_MIME_TYPE_MAP.put("dvi", "application/x-dvi");
		_MIME_TYPE_MAP.put("spl", "application/x-futuresplash");
		_MIME_TYPE_MAP.put("gtar", "application/x-gtar");
		_MIME_TYPE_MAP.put("hdf", "application/x-hdf");
		_MIME_TYPE_MAP.put("js", "application/x-javascript");
		_MIME_TYPE_MAP.put("skp", "application/x-kn");
		_MIME_TYPE_MAP.put("skd", "application/x-kn");
		_MIME_TYPE_MAP.put("skt", "application/x-kn");
		_MIME_TYPE_MAP.put("skm", "application/x-kn");
		_MIME_TYPE_MAP.put("latex", "application/x-latex");
		_MIME_TYPE_MAP.put("nc", "application/x-netcdf");
		_MIME_TYPE_MAP.put("cdf", "application/x-netcdf");
		_MIME_TYPE_MAP.put("sh", "application/x-sh");
		_MIME_TYPE_MAP.put("shar", "application/x-shar");
		_MIME_TYPE_MAP.put("swf", "application/x-shockwave-flash");
		_MIME_TYPE_MAP.put("sit", "application/x-stuffit");
		_MIME_TYPE_MAP.put("sv4cpio", "application/x-sv4cpio");
		_MIME_TYPE_MAP.put("sv4crc", "application/x-sv4crc");
		_MIME_TYPE_MAP.put("tar", "application/x-tar");
		_MIME_TYPE_MAP.put("tcl", "application/x-tcl");
		_MIME_TYPE_MAP.put("tex", "application/x-tex");
		_MIME_TYPE_MAP.put("texinfo", "application/x-texinfo");
		_MIME_TYPE_MAP.put("texi", "application/x-texinfo");
		_MIME_TYPE_MAP.put("t", "application/x-troff");
		_MIME_TYPE_MAP.put("tr", "application/x-troff");
		_MIME_TYPE_MAP.put("roff", "application/x-troff");
		_MIME_TYPE_MAP.put("man", "application/x-troff-man");
		_MIME_TYPE_MAP.put("me", "application/x-troff-me");
		_MIME_TYPE_MAP.put("ms", "application/x-troff-ms");
		_MIME_TYPE_MAP.put("ustar", "application/x-ustar");
		_MIME_TYPE_MAP.put("src", "application/x-wais-source");
		_MIME_TYPE_MAP.put("xhtml", "application/xhtml+xml");
		_MIME_TYPE_MAP.put("xht", "application/xhtml+xml");
		_MIME_TYPE_MAP.put("zip", "application/zip");
		_MIME_TYPE_MAP.put("au", "audio/basic");
		_MIME_TYPE_MAP.put("snd", "audio/basic");
		_MIME_TYPE_MAP.put("mid", "audio/midi");
		_MIME_TYPE_MAP.put("midi", "audio/midi");
		_MIME_TYPE_MAP.put("kar", "audio/midi");
		_MIME_TYPE_MAP.put("mpga", "audio/mpeg");
		_MIME_TYPE_MAP.put("mp2", "audio/mpeg");
		_MIME_TYPE_MAP.put("mp3", "audio/mpeg");
		_MIME_TYPE_MAP.put("aif", "audio/x-aiff");
		_MIME_TYPE_MAP.put("aiff", "audio/x-aiff");
		_MIME_TYPE_MAP.put("aifc", "audio/x-aiff");
		_MIME_TYPE_MAP.put("m3u", "audio/x-mpegurl");
		_MIME_TYPE_MAP.put("ram", "audio/x-pn-realaudio");
		_MIME_TYPE_MAP.put("rm", "audio/x-pn-realaudio");
		_MIME_TYPE_MAP.put("rpm", "audio/x-pn-realaudio-plugin");
		_MIME_TYPE_MAP.put("ra", "audio/x-realaudio");
		_MIME_TYPE_MAP.put("wav", "audio/x-wav");
		_MIME_TYPE_MAP.put("pdb", "chemical/x-pdb");
		_MIME_TYPE_MAP.put("xyz", "chemical/x-xyz");
		_MIME_TYPE_MAP.put("bmp", "image/bmp");
		_MIME_TYPE_MAP.put("gif", "image/gif");
		_MIME_TYPE_MAP.put("ief", "image/ief");
		_MIME_TYPE_MAP.put("jpeg", "image/jpeg");
		_MIME_TYPE_MAP.put("jpg", "image/jpeg");
		_MIME_TYPE_MAP.put("jpe", "image/jpeg");
		_MIME_TYPE_MAP.put("png", "image/png");
		_MIME_TYPE_MAP.put("tiff", "image/tiff");
		_MIME_TYPE_MAP.put("tif", "image/tiff");
		_MIME_TYPE_MAP.put("djvu", "image/vnd.djvu");
		_MIME_TYPE_MAP.put("djv", "image/vnd.djvu");
		_MIME_TYPE_MAP.put("wbmp", "image/vnd.wap.wbmp");
		_MIME_TYPE_MAP.put("ras", "image/x-cmu-raster");
		_MIME_TYPE_MAP.put("pnm", "image/x-portable-anymap");
		_MIME_TYPE_MAP.put("pbm", "image/x-portable-bitmap");
		_MIME_TYPE_MAP.put("pgm", "image/x-portable-graymap");
		_MIME_TYPE_MAP.put("ppm", "image/x-portable-pixmap");
		_MIME_TYPE_MAP.put("rgb", "image/x-rgb");
		_MIME_TYPE_MAP.put("xbm", "image/x-xbitmap");
		_MIME_TYPE_MAP.put("xpm", "image/x-xpixmap");
		_MIME_TYPE_MAP.put("xwd", "image/x-xwindowdump");
		_MIME_TYPE_MAP.put("igs", "model/iges");
		_MIME_TYPE_MAP.put("iges", "model/iges");
		_MIME_TYPE_MAP.put("msh", "model/mesh");
		_MIME_TYPE_MAP.put("mesh", "model/mesh");
		_MIME_TYPE_MAP.put("silo", "model/mesh");
		_MIME_TYPE_MAP.put("wrl", "model/vrml");
		_MIME_TYPE_MAP.put("vrml", "model/vrml");
		_MIME_TYPE_MAP.put("css", "text/css");
		_MIME_TYPE_MAP.put("html", "text/html");
		_MIME_TYPE_MAP.put("htm", "text/html");
		_MIME_TYPE_MAP.put("asc", "text/plain");
		_MIME_TYPE_MAP.put("txt", "text/plain");
		_MIME_TYPE_MAP.put("rtx", "text/richtext");
		_MIME_TYPE_MAP.put("rtf", "text/rtf");
		_MIME_TYPE_MAP.put("sgml", "text/sgml");
		_MIME_TYPE_MAP.put("sgm", "text/sgml");
		_MIME_TYPE_MAP.put("tsv", "text/tab-separated-values");
		_MIME_TYPE_MAP.put("wml", "text/vnd.wap.wml");
		_MIME_TYPE_MAP.put("wmls", "text/vnd.wap.wmlscript");
		_MIME_TYPE_MAP.put("etx", "text/x-setext");
		_MIME_TYPE_MAP.put("xsl", "text/xml");
		_MIME_TYPE_MAP.put("xml", "text/xml");
		_MIME_TYPE_MAP.put("mpeg", "video/mpeg");
		_MIME_TYPE_MAP.put("mpg", "video/mpeg");
		_MIME_TYPE_MAP.put("mpe", "video/mpeg");
		_MIME_TYPE_MAP.put("qt", "video/quicktime");
		_MIME_TYPE_MAP.put("mov", "video/quicktime");
		_MIME_TYPE_MAP.put("mxu", "video/vnd.mpegurl");
		_MIME_TYPE_MAP.put("avi", "video/x-msvideo");
		_MIME_TYPE_MAP.put("movie", "video/x-sgi-movie");
		_MIME_TYPE_MAP.put("ice", "x-conference/x-cooltalk");
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) {
		String pkid = request.getParameter("pkid");
		try {
		String filePath = "d:/upload/test.doc";
		String fileType = "doc";
		String fileDescription = "test";
		setResponseContentType(response, fileType, fileDescription);
		OutputStream out = response.getOutputStream();
		java.io.BufferedOutputStream bout = new java.io.BufferedOutputStream(out);
		InputStream in = new FileInputStream(new File(fileid));
		java.io.BufferedInputStream bin = new java.io.BufferedInputStream(in);
		while (bin.available() > 0) {
			byte[] b = new byte[512];
			int nResult = bin.read(b);
			if (nResult == -1)
			break;
			bout.write(b, 0, nResult);
		}
		bout.flush();
		return null;
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response){
		doGet(request,response);
	}
	private void setResponseContentType(HttpServletResponse response,
			String filetype, String description) throws Exception {
		String lowerFileType = filetype.toLowerCase();
		String contentType = (String) _MIME_TYPE_MAP.get(lowerFileType);
		if (null == contentType)
			contentType = "other/other";
		//not image file
		if (!contentType.startsWith("image")
				&& "application/octet-stream".equals(contentType)) {
			response.setHeader("Content-Type", contentType);
			response.setHeader("Content-Disposition", "attachment; filename=\""
					+ java.net.URLEncoder.encode(description + "." + filetype,
							"GBK") + "\"");
		} else {
			//image file
			response.setContentType(contentType + ";charset=GBK");
		}
	}
}
分享到:
评论

相关推荐

    文件下载servlet

    文件下载servlet,java文件下载。

    servlet上传下载文件

    Servlet技术广泛应用于文件上传和下载的功能实现,因为它们可以方便地与客户端交互并处理数据流。在本例中,我们将深入探讨如何使用Servlet来实现文件上传和下载功能。 首先,让我们了解文件上传的基本流程。当用户...

    Servlet中文件上传和下载

    本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...

    servlet实现文件上传下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    servlet文件下载项目

    在这个"Servlet文件下载项目"中,我们利用Servlet技术来实现文件的下载功能。这是一个非常实用的功能,尤其对于那些需要向用户提供文件下载服务的网站或应用。 首先,我们需要了解Servlet的基本工作原理。Servlet是...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    文件上传下载servlet自用

    在IT行业中,文件上传下载是Web应用中常见的功能,尤其在服务器端编程中,Servlet扮演着重要的角色。Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在接收到HTTP请求后进行处理,并向客户端返回响应。在...

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...

    java servlet实现文件下载

    本示例中,我们将探讨如何使用Java Servlet来实现文件的下载功能。 首先,理解HTTP协议是至关重要的,因为它定义了客户端(浏览器)与服务器之间的通信方式。在文件下载场景中,服务器需要响应一个HTTP请求,该请求...

    servlet文件简单代码

    #### 二、文件下载Servlet代码详解 ##### 1. 导入必要的包 ```java import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import ...

    servlet-api.jar 下载地址

    Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer Pages)规范的API接口。这个库文件主要用于与Web服务器交互,处理HTTP请求,并生成响应。在本文中,我们将深入探讨Servlet...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; 包含翻译后的API文档:javax.servlet-api-4.0.0...

    基于servlet的文件下载代码

    特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大的服务器端技术,可以很好地实现这一功能。本文将详细介绍一个基于Servlet的文件下载代码示例,并对其实现原理进行...

    Servlet3.1规范官方文档(中文版)

    根据提供的文件内容,以下是对Servlet3.1规范官方文档(中文版)中的知识点的详细说明。 首先,Servlet3.1官方文档是Java™ Servlet规范版本3.1的中文翻译版本。它详细描述了servlet技术规范的各个方面,包括对...

    答Servlet下载文件的附件

    这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...

    用servlet写的文件上传及下载功能带进度条

    自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...

    jsp,servlet上传下载文件

    jsp、servlet 文件上传下载技术详解 文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载...

    jsp+servlet实现大型文件下载

    本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...

    servlet-api中文文档

    在这个压缩包中,包含的是对Servlet API的中文文档,可能是作者因为无法找到官方的源码和javadoc而自行整理的笔记。 首先,我们来看看servlet的概念。Servlet是一个Java类,它扩展了服务器的功能,可以处理来自...

Global site tag (gtag.js) - Google Analytics