HttpServletResponse下载文件

5 篇文章 0 订阅

HttpServletResponse对象代表服务器的响应,这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。使用HttpServletResponse输出文件,浏览器会解析内容,完成下载。
核心代码如下:

public static void export(String fileContent, String downloadFile, HttpServletResponse response) throws Exception {
        byte[] content = Base64Utils.decodeFromString(fileContent);
        response.reset();
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(downloadFile.getBytes()));
        response.addHeader("Content-Length", "" + content.length);
        OutputStream ous = new BufferedOutputStream(response.getOutputStream());
        response.setContentType("application/octet-stream;charset=utf-8");
        ous.write(content);
        ous.flush();
        ous.close();
    }
  • Content-Disposition
    是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
    格式说明: content-disposition = “Content-Disposition” “:” disposition-type *( “;” disposition-parm ) 。
    属性名disposition-type是以什么方式下载,attachment为以附件方式下载disposition-parm为默认保存时的文件名。
  • Content-Length
    用于描述HTTP消息实体的传输长度the transfer-length of the message-body。在HTTP协议中,消息实体长度和消息实体的传输长度是有区别,比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。
  • Content-Type
    约定请求和响应的HTTP body内容编码类型,客户端和服务端根据HTTP头部字段Content-Type正确解码HTTP body内容。当响应的Content-Type为 application/octet- stream情况下使用了Content-Disposition为attachment的话,那就意味着你不想直接显示内容,而是弹出一个”文件下载”的对话框,接下来就是由你来决定“打开”还是“保存” 。
    Content-Type种类非常多,具体请参考Http Content-Type对照表
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值