详解Java文件下载的几种实现方式
发布时间 - 2026-01-10 21:53:44 点击率:次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文件下载代码
# java实现文件下载代码
# Java用文件流下载网络文件示例代码
# java实现FTP文件上传与文件下载
# JavaWeb导出Excel文件并弹出下载框
# Java Web实现文件下载和乱码处理方法
# JavaWeb实现文件上传下载功能实例详解
# JAVA SFTP文件上传、下载及批量下载实例
# Java下载文件的4种方式总结
# Java下载文件的四种方式详细代码
# java多线程文件下载器的实现
# 是指
# 几种
# 非常重要
# 读到
# 大家多多
# 清空
# attachment
# getBytes
# length
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel观察者模式如何使用_Laravel Model Observer配置
Swift开发中switch语句值绑定模式
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Linux后台任务运行方法_nohup与&使用技巧【技巧】
PythonWeb开发入门教程_Flask快速构建Web应用
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel中的Facade(门面)到底是什么原理
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速搭建高效WAP手机网站吸引移动用户?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何快速登录WAP自助建站平台?
如何在Windows 2008云服务器安全搭建网站?
Laravel怎么实现验证码(Captcha)功能
如何在IIS7上新建站点并设置安全权限?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
Laravel如何配置和使用缓存?(Redis代码示例)
如何确保FTP站点访问权限与数据传输安全?
个人网站制作流程图片大全,个人网站如何注销?
如何在建站主机中优化服务器配置?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Android GridView 滑动条设置一直显示状态(推荐)
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Firefox Developer Edition开发者版本入口
文字头像制作网站推荐软件,醒图能自动配文字吗?
中山网站制作网页,中山新生登记系统登记流程?
EditPlus中的正则表达式实战(6)
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何快速搭建高效WAP手机网站?
如何快速生成ASP一键建站模板并优化安全性?
如何在云主机上快速搭建多站点网站?
怎么用AI帮你设计一套个性化的手机App图标?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
在线制作视频的网站有哪些,电脑如何制作视频短片?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel怎么使用artisan命令缓存配置和视图
如何在服务器上配置二级域名建站?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程

