1. import javax.servlet.http.HttpServletResponse;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6.  
  7. public class TestUtil {
  8. /*
  9. 根据文件所在路径下载文件
  10. */
  11. public void download(HttpServletResponse response, String filePath){
  12. File file = new File(filePath);
  13. // 取得文件名。
  14. String fileName = file.getName();
  15. InputStream fis = null;
  16. try {
  17. fis = new FileInputStream(file);
  18. response.reset();
  19. response.setCharacterEncoding("UTF-8");
  20. response.setContentType("application/force-download");// 设置强制下载不打开
  21. response.addHeader("Content-Disposition",
  22. "attachment;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1"));
  23. response.setHeader("Content-Length", String.valueOf(file.length()));
  24.  
  25. byte[] b = new byte[1024];
  26. int len;
  27. while ((len = fis.read(b)) != -1) {
  28. response.getOutputStream().write(b, 0, len);
  29. }
  30. response.flushBuffer();
  31. fis.close();
  32. }catch (IOException e) {
  33. throw new RuntimeException(e);
  34. }
  35. }
  36. }

  如以上方法在不同浏览器下载文件名乱码,可换用以下方法:

  1. import javax.servlet.http.HttpServletRequest;
  2. import javax.servlet.http.HttpServletResponse;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.URLEncoder;
  8.  
  9. public class TestUtil {
  10. /*
  11. 根据文件所在路径下载文件
  12. */
  13. public void download(HttpServletRequest request, HttpServletResponse response, String filePath){
  14. File file = new File(filePath);
  15. // 取得文件名。
  16. String fileName = file.getName();
  17. InputStream fis = null;
  18. try {
  19. fis = new FileInputStream(file);
  20. request.setCharacterEncoding("UTF-8");
  21. String agent = request.getHeader("User-Agent").toUpperCase();
  22. if ((agent.indexOf("MSIE") > 0) || ((agent.indexOf("RV") != -1) && (agent.indexOf("FIREFOX") == -1)))
  23. fileName = URLEncoder.encode(fileName, "UTF-8");
  24. else {
  25. fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
  26. }
  27. response.reset();
  28. response.setCharacterEncoding("UTF-8");
  29. response.setContentType("application/force-download");// 设置强制下载不打开
  30. response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
  31. response.setHeader("Content-Length", String.valueOf(file.length()));
  32.  
  33. byte[] b = new byte[1024];
  34. int len;
  35. while ((len = fis.read(b)) != -1) {
  36. response.getOutputStream().write(b, 0, len);
  37. }
  38. response.flushBuffer();
  39. fis.close();
  40. }catch (IOException e) {
  41. throw new RuntimeException(e);
  42. }
  43. }
  44. }

  

JAVA中实现根据文件路径下载文件的更多相关文章

  1. java中如何创建带路径的文件

    请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...

  2. python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es

    #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...

  3. 由ASP.NET Core根据路径下载文件异常引发的探究

    前言 最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架.由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行 ...

  4. 通过Java WebService接口从服务端下载文件

    一. 前言 本文讲述如何通过webservice接口,从服务端下载文件.报告到客户端.适用于跨系统间的文件交互,传输文件不大的情况(控制在几百M以内).对于这种情况搭建一个FTP环境,增加了系统部署的 ...

  5. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  6. java中File的delete()方法删除文件失败的原因

    java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...

  7. JAVA中使用FTPClient上传下载

    Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...

  8. katalon系列十二:自动化上传文件、下载文件

    一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...

  9. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

随机推荐

  1. 文件描述符 VS 文件句柄

    文件描述符 VS 文件句柄 文件描述符是标准 C 里用的,是 int 型的,比如调用 open 函数成功后会返回一个与当前文件相关联的 int 型数字. 文件句柄是 Windows 里用的,是 HAN ...

  2. Spring MVC-控制器(Controller)-可参数化视图控制器(Parameterizable View Controller )示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_parameterizableviewcontroller.htm 说明:示例基于 ...

  3. pg 学习资料

    文/谭峰 DBA,PostgreSQL专家 开源数据库 PostgreSQL 中文资料非常缺乏,很多社区朋友苦于上手的中文资料少,因此汇总收集以下 PostgreSQL 中文资料,包括 Postgre ...

  4. ps f

    这个命令可以以树形结构列出进程信息.可以清楚的看清父进程子进程直接的关系.可笑我之前还以为所有的命令参数都是带有一个中划线的. 不过,这里列出的进程好像不全.应该仔细的看看ps 的命令. [root@ ...

  5. footer在最低显示

    footer在最低显示 http://stackoverflow.com/questions/585945/how-to-align-content-of-a-div-to-the-bottom

  6. 2014年辛星jquery解读第三节 Ajax

    ***************Ajax********************* 1.Ajax是Asynchronous Javascript And  XML的简写,它指的是异步Javascript ...

  7. velocity简单样例

    velocity简单样例整体实现须要三个步骤,详细例如以下: 1.创建一个Javaproject 2.导入须要的jar包 3.创建须要的文件 ============================= ...

  8. mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置

    mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置 转载自勤奋的小青蛙 mongodb占用内存非常高,这是因为官方为了提升存储的效率,设计就这么设计的. 但是大部分的个人 ...

  9. CentOs7 修改rpm安装背景图

    http://bbs.chinaunix.net/thread-4166176-1-1.html

  10. Error creating bean with name " "问题

    Spring MVC框架中使用@Autowired自动装配时出现 Error creating bean with name " "问题的解决方式在spring的xml配置文件be ...