JAVA中实现根据文件路径下载文件
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- public class TestUtil {
- /*
- 根据文件所在路径下载文件
- */
- public void download(HttpServletResponse response, String filePath){
- File file = new File(filePath);
- // 取得文件名。
- String fileName = file.getName();
- InputStream fis = null;
- try {
- fis = new FileInputStream(file);
- response.reset();
- response.setCharacterEncoding("UTF-8");
- response.setContentType("application/force-download");// 设置强制下载不打开
- response.addHeader("Content-Disposition",
- "attachment;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1"));
- response.setHeader("Content-Length", String.valueOf(file.length()));
- byte[] b = new byte[1024];
- int len;
- while ((len = fis.read(b)) != -1) {
- response.getOutputStream().write(b, 0, len);
- }
- response.flushBuffer();
- fis.close();
- }catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
如以上方法在不同浏览器下载文件名乱码,可换用以下方法:
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URLEncoder;
- public class TestUtil {
- /*
- 根据文件所在路径下载文件
- */
- public void download(HttpServletRequest request, HttpServletResponse response, String filePath){
- File file = new File(filePath);
- // 取得文件名。
- String fileName = file.getName();
- InputStream fis = null;
- try {
- fis = new FileInputStream(file);
- request.setCharacterEncoding("UTF-8");
- String agent = request.getHeader("User-Agent").toUpperCase();
- if ((agent.indexOf("MSIE") > 0) || ((agent.indexOf("RV") != -1) && (agent.indexOf("FIREFOX") == -1)))
- fileName = URLEncoder.encode(fileName, "UTF-8");
- else {
- fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
- }
- response.reset();
- response.setCharacterEncoding("UTF-8");
- response.setContentType("application/force-download");// 设置强制下载不打开
- response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
- response.setHeader("Content-Length", String.valueOf(file.length()));
- byte[] b = new byte[1024];
- int len;
- while ((len = fis.read(b)) != -1) {
- response.getOutputStream().write(b, 0, len);
- }
- response.flushBuffer();
- fis.close();
- }catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
JAVA中实现根据文件路径下载文件的更多相关文章
- java中如何创建带路径的文件
请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...
- python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es
#!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...
- 由ASP.NET Core根据路径下载文件异常引发的探究
前言 最近在开发新的项目,使用的是ASP.NET Core6.0版本的框架.由于项目中存在文件下载功能,没有使用类似MinIO或OSS之类的分布式文件系统,而是下载本地文件,也就是根据本地文件路径进行 ...
- 通过Java WebService接口从服务端下载文件
一. 前言 本文讲述如何通过webservice接口,从服务端下载文件.报告到客户端.适用于跨系统间的文件交互,传输文件不大的情况(控制在几百M以内).对于这种情况搭建一个FTP环境,增加了系统部署的 ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- java中File的delete()方法删除文件失败的原因
java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...
- JAVA中使用FTPClient上传下载
Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...
- katalon系列十二:自动化上传文件、下载文件
一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...
- Java中获取项目根路径和类加载路径的7种方法
引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...
随机推荐
- 文件描述符 VS 文件句柄
文件描述符 VS 文件句柄 文件描述符是标准 C 里用的,是 int 型的,比如调用 open 函数成功后会返回一个与当前文件相关联的 int 型数字. 文件句柄是 Windows 里用的,是 HAN ...
- Spring MVC-控制器(Controller)-可参数化视图控制器(Parameterizable View Controller )示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_parameterizableviewcontroller.htm 说明:示例基于 ...
- pg 学习资料
文/谭峰 DBA,PostgreSQL专家 开源数据库 PostgreSQL 中文资料非常缺乏,很多社区朋友苦于上手的中文资料少,因此汇总收集以下 PostgreSQL 中文资料,包括 Postgre ...
- ps f
这个命令可以以树形结构列出进程信息.可以清楚的看清父进程子进程直接的关系.可笑我之前还以为所有的命令参数都是带有一个中划线的. 不过,这里列出的进程好像不全.应该仔细的看看ps 的命令. [root@ ...
- footer在最低显示
footer在最低显示 http://stackoverflow.com/questions/585945/how-to-align-content-of-a-div-to-the-bottom
- 2014年辛星jquery解读第三节 Ajax
***************Ajax********************* 1.Ajax是Asynchronous Javascript And XML的简写,它指的是异步Javascript ...
- velocity简单样例
velocity简单样例整体实现须要三个步骤,详细例如以下: 1.创建一个Javaproject 2.导入须要的jar包 3.创建须要的文件 ============================= ...
- mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置
mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置 转载自勤奋的小青蛙 mongodb占用内存非常高,这是因为官方为了提升存储的效率,设计就这么设计的. 但是大部分的个人 ...
- CentOs7 修改rpm安装背景图
http://bbs.chinaunix.net/thread-4166176-1-1.html
- Error creating bean with name " "问题
Spring MVC框架中使用@Autowired自动装配时出现 Error creating bean with name " "问题的解决方式在spring的xml配置文件be ...