java – 如何在Web应用程序中发送文件后删除文件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在Web应用程序中发送文件后删除文件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1403字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何在Web应用程序中发送文件后删除文件?](/upload/InfoBanner/zyjiaocheng/701/6f79d3f420ee4bb7b703914ef6677d00.jpg)
我有一个Web应用程序.我正在使用java和spring.应用程序可以创建一个文件并将其发送到浏览器,这很好.我这样做的方式是:
我在Services类中创建该文件,该方法将地址返回给控制器.然后控制器发送文件,并正确下载.控制器方法的代码是这样的.
@RequestMapping("/getFile")
public @ResponseBody
FileSystemResource getFile() {
String address = Services.createFile();
response.setContentType("application/vnd.ms-excel");
return new FileSystemResource(new File (address));
}
问题是文件保存在服务器中,经过多次请求后会有很多文件.我必须手动删除它们.问题是:如何在发送后删除此文件?或者有没有办法发送文件而不将其保存在服务器中?
解决方法:
不要使用@ResponseBody.让Spring注入HttpServletResponse并直接写入其OutputStream.
@RequestMapping("/getFile")
public void getFile(HttpServletResponse response) {
String address = Services.createFile();
File file = new File(address);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + file.getName());
OutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream(file);
// copy from in to out
IOUtils.copy(in,out);
out.close();
in.close();
file.delete();
}
我没有添加任何异常处理.我把它留给你.
FileSystemResource实际上只是Spring使用的FileInputStream的包装器.
或者,如果你想成为硬核,你可以使用自己的getOutputStream()方法创建自己的FileSystemResource实现,该方法返回你自己的FileOutputStream实现,当你调用close()时它会删除底层文件.
内容总结
以上是互联网集市为您收集整理的java – 如何在Web应用程序中发送文件后删除文件?全部内容,希望文章能够帮你解决java – 如何在Web应用程序中发送文件后删除文件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。