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(); }
相关推荐
Java文件下载的几种方式,是很方便的,找了半天找到了,共享一下
本文将详细探讨Java实现文件下载的几种主要方法。 ### 1. 使用HttpServletResponse #### 1.1 设置Content-Disposition 通过设置HttpServletResponse的`setContentDisposition()`方法,可以指定浏览器以下载方式...
这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这是最基本的方式,通过Servlet或Spring MVC等框架处理HTTP请求,然后在...
另外,压缩包中的两个`.mht`文件可能是关于Java文件下载的文章网页,它们可能提供了更多详细的示例和技巧,如使用流来处理大文件,防止内存溢出,或者实现断点续传下载。 总的来说,Java生成Excel有多种库可以选择...
### 最常用的几种Java打包方式总结 #### 一、引言 在Java开发过程中,将编写的程序打包成可执行文件是十分重要的一个环节。本文旨在详细介绍最常用的几种Java打包方式及其使用的工具,帮助开发者更加方便和轻松地...
本篇文章将详细介绍在Java中连接Oracle数据库的几种常见方法,以及相关的源码示例。 1. JDBC-ODBC桥连接: JDBC-ODBC桥是Java早期连接数据库的一种方式,它依赖于操作系统上的ODBC数据源。首先,你需要在系统中...
以上就是Java中调用DLL文件的几种常见方式及其注意事项。无论选择哪种方法,理解DLL的工作原理以及Java与原生代码交互的方式都是至关重要的。在实际项目中,应根据需求和项目规模来决定最合适的集成策略。
"用Jsp实现文件下载功能的几种方式" 本文将介绍用Jsp实现文件下载功能的几种方式。这些方式都可以实现文件下载的功能,但每种方式都有其特点和缺点。 方式一:直接提供文件地址 这种方式是最直接最简单的,即把...
本文将详细探讨几种Java下载图片的方法,并提供相应的源代码,帮助开发者更好地理解和应用。 1. **URL连接下载图片** 使用`java.net.URL`和`java.io`包中的类,可以通过建立HTTP连接来下载图片。以下是一个简单的...
介绍Java直接读取、带缓冲读取、内存映射读取文件,并详细注释。
### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) 在Java中,`java.io`包提供了处理输入/输出操作的基本类,主要包括`InputStream`和`OutputStream`。 ##### 1. 字节流(Byte Stream) **...
### Java解析XML的四种方式详解 #### 一、DOM(Document Object Model) DOM是一种平台和语言中立的接口,它将XML文档表示为一个树结构,使得程序可以创建、读取、更新或删除树中的元素。DOM实现了W3C的标准,能够...
以下是几种常见的 Java FTP 客户端库的比较: 表 1: Java FTP 客户端库比较 | 库名称 | 作者 | 版本 | 特点 | | --- | --- | --- | --- | | J-ftp | | 1.50 | 支持 FTP、SFTP、FTPS、TFTP 等协议 | | simpleftp |...
Java 实现批量下载并压缩文件是一项常见的任务,尤其在处理大量数据存储时。在这个过程中,主要涉及以下几个关键知识点: 1. **文件下载**:在Java中,文件下载通常基于网络I/O流,通过发送HTTP请求获取远程服务器...
在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...
Java实现文件下载,支持好几种下载方法,解决了中文文件名乱码问题.
2项目为实现文件上传的三种方式的源码,详细说明见我的博客。 jsp_upload-servlet项目:(1).Jsp/servlet 实现文件上传 (2).模拟Post请求/servlet 实现文件上传 jetty_upload-springmvc项目:(3).模拟Post请求/...