社区
Java SE
帖子详情
客户端文件下载结束后怎样删除Server上临时文件
wang_yong
2009-10-30 05:46:48
请教高人:在Download文件下载后,怎样删除存放在服务器上的临时文件??
...全文
491
11
打赏
收藏
客户端文件下载结束后怎样删除Server上临时文件
请教高人:在Download文件下载后,怎样删除存放在服务器上的临时文件??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wang_yong
2009-11-02
打赏
举报
回复
[Quote=引用 10 楼 jdk150 的回复:]
不要用FileStreamInfo,方法还是很多的
1.从action跳转到jsp/servlet中去做下载
2.在action中直接用response向浏览器输出字节流,然后return null
[/Quote]
有没有现成的例子可以借鉴一下吗??
jdk150
2009-11-02
打赏
举报
回复
不要用FileStreamInfo,方法还是很多的
1.从action跳转到jsp/servlet中去做下载
2.在action中直接用response向浏览器输出字节流,然后return null
xingqiliudehuanghun
2009-11-02
打赏
举报
回复
我们的项目没有用Structs框架,所以可以直接在jsp中设置header,然后将文件写入输出流,
不需要FileStreamInfo对象。按你的情况可能你只能按人家的规矩来了。这样的话这个思路你
看是否可行.
1.将生成的下载文件统一放到一特定目录。
2.文件名称加上时间前缀
3.用以特定线程最为GC,每隔一段时间扫描下目录将时间前缀与当前系统时间之差大于指定
时间间隔的文件作为垃圾文件删除
这样你的程序就不要考虑临时文件删除的问题了,就像Java中不用考虑内存的问题一样,
但弊端也是有的。如果你的站点访问量大的话可能垃圾文件一个时间间隔的文件增加
也是很客观的。而且由于判断垃圾文件的方法比较简单,可能造成一个比较大的文件
正在下载中却被当做垃圾删掉。所以这个办法是万不得已的办法,只能你的文件下载代码
允许你修改,尽量修改代码来解决问题
wang_yong
2009-11-02
打赏
举报
回复
[Quote=引用 6 楼 xingqiliudehuanghun 的回复:]
为什么不直接写到输出流中呢,那样就不用考虑删除文件的问题了
[/Quote]
兄弟,我非常同意你的这种想法,我也尝试过,但是FileStreamInfo这个对象必须传一个File对象给她,如果是流的就好了,你有什么好办法吗?
zjhlht
2009-11-02
打赏
举报
回复
[Quote=引用 6 楼 xingqiliudehuanghun 的回复:]
为什么不直接写到输出流中呢,那样就不用考虑删除文件的问题了
[/Quote]
同意
xingqiliudehuanghun
2009-11-02
打赏
举报
回复
为什么不直接写到输出流中呢,那样就不用考虑删除文件的问题了
wang_yong
2009-11-02
打赏
举报
回复
[Quote=引用 1 楼 youthon 的回复:]
请说明具体条件吧
[/Quote]
具体情形是这样的:
从DB读取数据,在服务器导出Excel临时文件,download到客户端后,删除服务器上生成的那个临时Excel文件。
前面的操作现在都没有问题了(虽然还有不足),就是删除临时文件的操作,不知怎样来操作。
protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 源文件路径
srcFilePath = servlet.getInitParameter("file-upload");
// 生成Excel文件
File file = createExcel();
System.out.println(file.getAbsolutePath());
// 设置下载新的文件名
String newFileName = Constants.FILE_NAME
+ CommonUtils.getDateFormat(Constants.DATE_YMDH24MS) + ".xls";
newFileName = new String(newFileName.getBytes("gbk"), "iso-8859-1");
// 设置方式:附件
response.setHeader("Content-disposition", "attachment; filename=" + newFileName);
// 设定下载文件类型
FileStreamInfo si = new FileStreamInfo("application/vnd.ms-excel", file);
return si;
}
这是download的代码,如果在这个方法的return前使用file.delete()的话,会报文件不存在的错误,就是说还没有提示客户下载就已经将源文件删除了。
littlemonster
2009-10-30
打赏
举报
回复
我曾经用php做过这个。。
那个文件属性啥的一定要改好。。否则删不掉。。
苍蝇①号
2009-10-30
打赏
举报
回复
不知道你的服务器端和客户端是怎么交互的
swandragon
2009-10-30
打赏
举报
回复
File
delete方法
弘石
2009-10-30
打赏
举报
回复
请说明具体条件吧
Python快速搭建局域网HTTP服务器:从http.
server
到Flask实战指南
本文详解如何使用Python快速搭建局域网HTTP服务,涵盖内置http.
server
模块的极速文件共享、socket
server
自定义Handler原理、以及Flask构建带上传下载功能的Web界面。重点包括端口配置、目录权限与路径安全、大文件传输优化、防火墙调试及后台持久化运行等关键技术点,适用于开发测试、
临时文件
共享和内网演示场景。
SQL
Server
2008完整卸载指南:彻底清理残留文件与注册表
本文详细阐述SQL
Server
2008的完整卸载流程,涵盖卸载前备份与服务停止、官方安装中心卸载、手动深度清理(残留文件目录、注册表项、系统服务、用户组)、卸载完整性验证及常见故障排错。重点强调注册表清理风险与操作规范,确保系统恢复至安装前状态,为重装或升级扫清障碍。
Java Selenium远程测试环境搭建与文件上传下载实战
本文详解Java+Selenium远程测试环境搭建,涵盖Selenium Grid/Standalone部署、RemoteWebDriver
客户端
配置、远程文件上传(LocalFileDetector)与下载(Managed Downloads)核心方案,并深入讲解Capabilities控制、RemoteWebDriverBuilder使用、Grid Hub连接、超时处理及常见问题排查。内容聚焦自动化测试工程化实践,适用于CI/CD集成与生产级稳定运行。
Argo CD 命令实战:`argocd repocreds rm`
删除
仓库凭证模板全解析
Krokiet是基于Rust开发的跨平台磁盘清理工具,集成重复文件查找、相似图片识别、大文件扫描、
临时文件
清理、Exif元数据清除等12项核心功能。支持Windows/Linux/macOS,提供GUI界面、离线运行、隐私保护及高性能扫描能力,适用于摄影师、开发者和普通用户的空间优化需求。
Windows
Server
部署MySQL 5.7.44:从下载到配置的完整指南
本文详细讲解在Windows
Server
(2012 R2至2022)上部署MySQL 5.7.44的完整流程,涵盖ZIP版下载校验、my.ini配置、数据目录初始化、Windows服务注册、root密码设置、远程访问配置(含防火墙与安全组)、常见问题排查(如服务启动失败、端口占用、连接超时、中文乱码)及基础安全加固。强调生产环境推荐ZIP免安装版、utf8mb4字符集、独立数据目录与最小权限原则。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章