zoukankan      html  css  js  c++  java
  • 下载文件

    以下内容来自 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());
    

      

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

  • 相关阅读:
    异步运行
    ES6新增----深入理解generator
    ES6新增(箭头函数)
    ES6新增(有关变量)
    I2C写时序图[转]
    kernel中,dump_stack打印调用栈,print_hex_dump打印一片内存,记录一下
    http://man.linuxde.net/ 转
    Linux网络
    Linux基础:用tcpdump抓包(转)
    指针长度问题,不同架构的指针长度不同,可能32位,也可能64位,与unsigned long长度相同
  • 原文地址:https://www.cnblogs.com/yanqin/p/7069247.html
Copyright © 2011-2022 走看看