`

Java各种文件下载处理

    博客分类:
  • Java
阅读更多
public HttpServletResponse download(String path,
			HttpServletResponse response) {
		try {
			// path是指欲下载的文件的路径。
			File file = new File(path);
			// 取得文件名。
			String filename = file.getName();
			// 取得文件的后缀名。
			String ext = filename.substring(filename.lastIndexOf(".") + 1)
					.toUpperCase();
			// 以流的形式下载文件。
			InputStream fis = new BufferedInputStream(new FileInputStream(path));
			byte[] buffer = new byte[fis.available()];
			fis.read(buffer);
			fis.close();
			// 清空response
			response.reset();
			// 设置response的Header
			response.addHeader("Content-Disposition", "attachment;filename="
					+ new String(filename.getBytes()));
			response.addHeader("Content-Length", "" + file.length());
			OutputStream toClient = new BufferedOutputStream(response
					.getOutputStream());
			response.setContentType("application/octet-stream");
			toClient.write(buffer);
			toClient.flush();
			toClient.close();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		return response;
	}

	public void downloadLocal(HttpServletResponse response)
			throws FileNotFoundException {
		// 下载本地文件
		String fileName = "Operator.doc".toString(); // 文件的默认保存名
		// 读到流中
		InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
		// 设置输出的格式
		response.reset();
		response.setContentType("bin");
		response.addHeader("Content-Disposition", "attachment; filename=\""
				+ fileName + "\"");
		// 循环取出流中的数据
		byte[] b = new byte[100];
		int len;
		try {
			while ((len = inStream.read(b)) > 0)
				response.getOutputStream().write(b, 0, len);
			inStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void downloadNet(HttpServletResponse response)
			throws MalformedURLException {
		// 下载网络文件
		int bytesum = 0;
		int byteread = 0;
		URL url = new URL("windine.blogdriver.com/logo.gif");
		try {
			URLConnection conn = url.openConnection();
			InputStream inStream = conn.getInputStream();
			FileOutputStream fs = new FileOutputStream("c:/abc.gif");
			byte[] buffer = new byte[1204];
			int length;
			while ((byteread = inStream.read(buffer)) != -1) {
				bytesum += byteread;
				System.out.println(bytesum);
				fs.write(buffer, 0, byteread);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 支持在线打开文件的一种方式
	public void downLoad(String filePath, HttpServletResponse response,
			boolean isOnLine) throws Exception {
		File f = new File(filePath);
		if (!f.exists()) {
			response.sendError(404, "File not found!");
			return;
		}
		BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
		byte[] buf = new byte[1024];
		int len = 0;
		response.reset(); // 非常重要
		if (isOnLine) { // 在线打开方式
			URL u = new URL("file:///" + filePath);
			response.setContentType(u.openConnection().getContentType());
			response.setHeader("Content-Disposition", "inline; filename="
					+ f.getName());
			// 文件名应该编码成UTF-8
		} else { // 纯下载方式
			response.setContentType("application/x-msdownload");
			response.setHeader("Content-Disposition", "attachment; filename="
					+ f.getName());
		}
		OutputStream out = response.getOutputStream();
		while ((len = br.read(buf)) > 0)
			out.write(buf, 0, len);
		br.close();
		out.close();
	}

 

转载:http://jingyemingyue.iteye.com/blog/1172179

分享到:
评论

相关推荐

    ajax实现java文件下载

    2. **Java文件下载**:在Java Web开发中,服务器端通常使用Servlet或Controller来处理文件下载请求。这些组件会根据客户端请求,读取文件内容,设置合适的HTTP响应头(如Content-Type,Content-Disposition等),并...

    java 文件处理工具类 java 文件处理工具类java 文件处理工具类java 文件处理工具类

    java 文件处理工具类 java 文件处理工具类java 文件处理工具类java 文件处理工具类java 文件处理工具类 java 文件处理工具类java 文件处理工具类java 文件处理工具类java 文件处理工具类 java 文件处理工具类java ...

    java大批量文件处理

    java大批量文件处理

    JAVA对音频文件处理程序

    在Java编程语言中,处理音频文件是一项常见的任务,特别是在多媒体应用、游戏开发或者音视频处理系统中。本项目“JAVA对音频文件处理程序”聚焦于读取音频文件,执行降分贝操作,然后将处理后的音频保存为新的文件。...

    Java实现文件下载功能

    在IT领域,尤其是Web开发中,文件下载是常见的需求之一,例如用户可能需要从服务器下载各种类型的文件,如文档、图片、压缩包等。本文将详细解析如何使用Java来实现这一功能,特别是针对Word文档的下载。 #### 重要...

    java访问https网址下载文件(含证书)

    在Java编程中,访问HTTPS网址并下载文件是一个常见的任务,特别是在需要安全传输敏感数据或确保数据完整性时。这里我们将深入探讨如何使用Java 1.7版本处理这一过程,包括处理SSL证书。 首先,理解HTTPS(超文本...

    java使用itext实现pdf文件下载

    在Java开发中,生成和处理PDF文档是一项常见的需求。Itext是一个强大的库,它允许开发者在Java环境中创建、编辑和修改PDF文档...通过实践和理解这些示例,你将能够熟练地在Java项目中运用Itext处理PDF文件的下载需求。

    Java API文档中文版.zip

    Java API文档是Java开发者不可或缺的参考资料,它详细地介绍了Java平台标准版(Java SE)的各种类库、接口和实现。这个“Java API文档中文版.zip”包含了一个.chm( Compiled HTML Help)文件,这是一种常见的帮助...

    Java多个文件根据URL下载后打包zip导出.zip

    在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...

    java+jsp 文件下载(服务器上的文件)

    在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...

    java实现文件下载,并弹出保存对话框(Excel)

    在IT领域,特别是Java开发中,处理文件下载和与用户交互是常见的需求,尤其是在Web应用程序中。本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤...

    JAVA_API1.6文档(中文)

    java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务...

    JAVA jdk1.8中文文档

    1. **java 开发语言**: 这个标签强调了Java是一种广泛使用的开发语言,用于构建各种类型的应用程序,包括桌面应用、Web应用和移动应用。 2. **后端**: 指Java通常在服务器端运行,处理业务逻辑和数据管理,与前端...

    JAVA API官方文档中文版

    3. **包**:Java API按照功能将类组织在不同的包中,如`java.io`用于输入输出操作,`java.util`包含各种实用工具类,`java.sql`处理数据库连接,等等。通过包的分类,开发者可以快速找到相关类。 4. **异常**:Java...

    java访问https网址下载文件

    以上就是使用Java访问HTTPS网址并下载文件的基本步骤,包括处理可能需要的证书下载。需要注意的是,实际生产环境中,为了安全起见,不应使用信任所有证书的策略,而是应该确保服务器的证书被正确配置并由受信任的CA...

    Java SE文档(全)

    本文档全面覆盖了Java程序设计的各种方面,旨在帮助开发者深入理解和掌握Java语言。 1. **人机交互**:在Java编程中,人机交互通常通过控制台输入输出或者图形用户界面(GUI)实现。控制台交互主要使用`System.out....

    JAVA8API-官方文档下载-中文版

    JAVA8 API 是Java开发者的重要参考资料,它详细阐述了Java 8平台的核心类库,包括各种接口、类、枚举和注解等。这份中文版的官方文档使得国内开发者能够更加方便地理解和使用Java 8的新特性,提升开发效率。 **核心...

    Java API文档 中文网页版

    总的来说,Java API文档中文网页版是Java开发者必备的参考资料,它可以帮助我们理解和使用Java平台提供的各种功能,提高编程的准确性和效率。在实际开发中,熟练掌握和查阅API文档是提升技能的关键步骤。

    java处理xml文件

    Java处理XML文件是Java开发中的常见任务,XML(Extensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储以及文档结构化等场景。本篇将详细讲解Java处理XML的相关知识点,主要涵盖以下几个...

    java上传,下载组件

    在Java Web开发中,上传和下载功能是常见的需求,用于处理用户数据的交换。本组件专注于简化这一过程,提供高效且易用的解决方案。以下是对这个"java上传,下载组件"的一些关键知识点的详细说明: 1. **...

Global site tag (gtag.js) - Google Analytics