返回介绍

12.1 文件下载概览

发布于 2025-04-22 20:10:04 字数 1095 浏览 0 评论 0 收藏

为了将像文件这样的资源发送到浏览器,需要在控制器中完成以下工作:

(1)对请求处理方法使用 void 返回类型,并在方法中添加 HttpServletResponse 参数。

(2)将响应的内容类型设为文件的内容类型。Content-Type 标题在某个实体的 body 中定义数据的类型,并包含媒体类型和子类型标识符。欲了解标准的内容类型,请访问 http://www.iana.org/assignments/media-types。如果不清楚内容类型,并且希望浏览器始终显示 Sava As(另存为)对话框,则将它设为 APPLICATION/OCTET-STREAM。这个值是不区分大小写的。

(3)添加一个名为 Content-Disposition 的 HTTP 响应标题,并赋值 attachment; filename= fileName,这里的 fileName 是默认文件名,应该出现在 File Download(文件下载)对话框中。它通常与文件同名,但是也并非一定如此。

例如,以下代码将一个文件发送到浏览器:

FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] bytes = new byte[bis.available()];
response.setContentType(contentType);
OutputStream os = response.getOutputStream();
bis.read(bytes);
os.write(bytes);

为了编程将一个文件发送到浏览器,首先要读取该文件作为 FileInputStream,并将内容加载到一个字节数组。随后,获取 HttpServletResponse 的 OutputStream,并调用其 write 方法传入字节数组。

将文件发送到 HTTP 客户端的更好方法是使用 Java NIO 的 Files.copy() 方法:

Path file = Paths.get(...);
Files.copy(file,response.getOutputStream());

代码更短,运行速度更快。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。