`
coconut_zhang
  • 浏览: 542067 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Java文件下载的几种方式

    博客分类:
  • java
 
阅读更多
  1. public HttpServletResponse download(String path, HttpServletResponse response) {
  2. try {
  3. // path是指欲下载的文件的路径。
  4. File file = new File(path);
  5. // 取得文件名。
  6. String filename = file.getName();
  7. // 取得文件的后缀名。
  8. String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
  9. // 以流的形式下载文件。
  10. InputStream fis = new BufferedInputStream(new FileInputStream(path));
  11. byte[] buffer = newbyte[fis.available()];
  12. fis.read(buffer);
  13. fis.close();
  14. // 清空response
  15. response.reset();
  16. // 设置response的Header
  17. response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
  18. response.addHeader("Content-Length", "" + file.length());
  19. OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
  20. response.setContentType("application/octet-stream");
  21. toClient.write(buffer);
  22. toClient.flush();
  23. toClient.close();
  24. } catch (IOException ex) {
  25. ex.printStackTrace();
  26. }
  27. return response;
  28. }
  29. publicvoid downloadLocal(HttpServletResponse response) throws FileNotFoundException {
  30. // 下载本地文件
  31. String fileName = "Operator.doc".toString(); // 文件的默认保存名
  32. // 读到流中
  33. InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
  34. // 设置输出的格式
  35. response.reset();
  36. response.setContentType("bin");
  37. response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
  38. // 循环取出流中的数据
  39. byte[] b = newbyte[100];
  40. int len;
  41. try {
  42. while ((len = inStream.read(b)) > 0)
  43. response.getOutputStream().write(b, 0, len);
  44. inStream.close();
  45. } catch (IOException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. publicvoid downloadNet(HttpServletResponse response) throws MalformedURLException {
  50. // 下载网络文件
  51. int bytesum = 0;
  52. int byteread = 0;
  53. URL url = new URL("windine.blogdriver.com/logo.gif");
  54. try {
  55. URLConnection conn = url.openConnection();
  56. InputStream inStream = conn.getInputStream();
  57. FileOutputStream fs = new FileOutputStream("c:/abc.gif");
  58. byte[] buffer = newbyte[1204];
  59. int length;
  60. while ((byteread = inStream.read(buffer)) != -1) {
  61. bytesum += byteread;
  62. System.out.println(bytesum);
  63. fs.write(buffer, 0, byteread);
  64. }
  65. } catch (FileNotFoundException e) {
  66. e.printStackTrace();
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. }
  71. //支持在线打开文件的一种方式
  72. publicvoid downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
  73. File f = new File(filePath);
  74. if (!f.exists()) {
  75. response.sendError(404, "File not found!");
  76. return;
  77. }
  78. BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
  79. byte[] buf = newbyte[1024];
  80. int len = 0;
  81. response.reset(); // 非常重要
  82. if (isOnLine) { // 在线打开方式
  83. URL u = new URL("file:///" + filePath);
  84. response.setContentType(u.openConnection().getContentType());
  85. response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
  86. // 文件名应该编码成UTF-8
  87. } else { // 纯下载方式
  88. response.setContentType("application/x-msdownload");
  89. response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
  90. }
  91. OutputStream out = response.getOutputStream();
  92. while ((len = br.read(buf)) > 0)
  93. out.write(buf, 0, len);
  94. br.close();
  95. out.close();
  96. }
分享到:
评论

相关推荐

    Java文件下载的几种方式.txt

    Java文件下载的几种方式,是很方便的,找了半天找到了,共享一下

    java文件下载的常用方式

    本文将详细探讨Java实现文件下载的几种主要方法。 ### 1. 使用HttpServletResponse #### 1.1 设置Content-Disposition 通过设置HttpServletResponse的`setContentDisposition()`方法,可以指定浏览器以下载方式...

    java下载文件的种方式

    这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这是最基本的方式,通过Servlet或Spring MVC等框架处理HTTP请求,然后在...

    java生成Excel及jar包和文件下载的几种方式

    另外,压缩包中的两个`.mht`文件可能是关于Java文件下载的文章网页,它们可能提供了更多详细的示例和技巧,如使用流来处理大文件,防止内存溢出,或者实现断点续传下载。 总的来说,Java生成Excel有多种库可以选择...

    最常用的几种Java打包方式总结

    ### 最常用的几种Java打包方式总结 #### 一、引言 在Java开发过程中,将编写的程序打包成可执行文件是十分重要的一个环节。本文旨在详细介绍最常用的几种Java打包方式及其使用的工具,帮助开发者更加方便和轻松地...

    oracle连接java的几种方法

    本篇文章将详细介绍在Java中连接Oracle数据库的几种常见方法,以及相关的源码示例。 1. JDBC-ODBC桥连接: JDBC-ODBC桥是Java早期连接数据库的一种方式,它依赖于操作系统上的ODBC数据源。首先,你需要在系统中...

    java dll文件调用的几种方式

    以上就是Java中调用DLL文件的几种常见方式及其注意事项。无论选择哪种方法,理解DLL的工作原理以及Java与原生代码交互的方式都是至关重要的。在实际项目中,应根据需求和项目规模来决定最合适的集成策略。

    用Jsp来实现文件下载功能的几种方式

    "用Jsp实现文件下载功能的几种方式" 本文将介绍用Jsp实现文件下载功能的几种方式。这些方式都可以实现文件下载的功能,但每种方式都有其特点和缺点。 方式一:直接提供文件地址 这种方式是最直接最简单的,即把...

    java下载图片的几种方式,提供源代码

    本文将详细探讨几种Java下载图片的方法,并提供相应的源代码,帮助开发者更好地理解和应用。 1. **URL连接下载图片** 使用`java.net.URL`和`java.io`包中的类,可以通过建立HTTP连接来下载图片。以下是一个简单的...

    Java读取文件的几种方式

    介绍Java直接读取、带缓冲读取、内存映射读取文件,并详细注释。

    Java IO流几种经典使用方式

    ### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) 在Java中,`java.io`包提供了处理输入/输出操作的基本类,主要包括`InputStream`和`OutputStream`。 ##### 1. 字节流(Byte Stream) **...

    java解析XML的四种方式

    ### Java解析XML的四种方式详解 #### 一、DOM(Document Object Model) DOM是一种平台和语言中立的接口,它将XML文档表示为一个树结构,使得程序可以创建、读取、更新或删除树中的元素。DOM实现了W3C的标准,能够...

    Java实现FTP批量大文件上传下载

    以下是几种常见的 Java FTP 客户端库的比较: 表 1: Java FTP 客户端库比较 | 库名称 | 作者 | 版本 | 特点 | | --- | --- | --- | --- | | J-ftp | | 1.50 | 支持 FTP、SFTP、FTPS、TFTP 等协议 | | simpleftp |...

    Java实现批量下载并压缩文件.pptx.pptx

    Java 实现批量下载并压缩文件是一项常见的任务,尤其在处理大量数据存储时。在这个过程中,主要涉及以下几个关键知识点: 1. **文件下载**:在Java中,文件下载通常基于网络I/O流,通过发送HTTP请求获取远程服务器...

    三种方式实现java远程调用(rmi),绝对可用

    在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...

    java 文件下载类

    Java实现文件下载,支持好几种下载方法,解决了中文文件名乱码问题.

    文件上传的三种方式-Java

    2项目为实现文件上传的三种方式的源码,详细说明见我的博客。 jsp_upload-servlet项目:(1).Jsp/servlet 实现文件上传 (2).模拟Post请求/servlet 实现文件上传 jetty_upload-springmvc项目:(3).模拟Post请求/...

Global site tag (gtag.js) - Google Analytics