下载文件

以下内容来自 SpringMVC指南  203页

看到这个下载文件讲的不错,记录下!

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

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

2.将响应的内容类型设为文件的内容类型。Content-Type标题在某个实体的body中定义数据的类型,并包含媒体类型和子类型标识符。不清楚内容类型,并且希望浏览器始终显示Save As(另存为)对话框,则将它设为application/octet-seream。这个值是不区分大小写的。

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,并调用其wirte方法传入字节数组。

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

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

  

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

posted @ 2017-06-23 12:14  抱明月  阅读(225)  评论(0编辑  收藏  举报