zoukankan      html  css  js  c++  java
  • poi导出excel打开文件时部分内容有问题

    问题描述:JavaWeb项目,ssm框架,从tomcat9.0.30换到weblogic10.3.6.0后,poi导出excel,打开文件时部分内容有问题;

    解决:

      response.addHeader("Content-Length", "" + outfile.length()); 

      替换成:
      response.setHeader("Content-Length", "" + outfile.length()); 

    分析一:   

        addHeader方法添加两个完全一样的信息时,总是为响应增加新的头部

        setHeader()添加两个完全一样的信息时,总是用新值去替换旧值

    分析二:

        我用F12看了我这个下载方法的响应头

    Response Headers:
        Content-Disposition: attachment;filename=项目设置-1592298665653.xlsx
        Content-Length: 4909
        Content-Type: application/octet-stream
        Date: Tue, 16 Jun 2020 09:11:05 GMT
        Transfer-Encoding: chunked

    setHeader方法中,并没有最后标红的Transfer-Encoding: chunked,而在addHeader方法中是有这个字段的;

    (这:我的response中并没有设置Transfer-Encoding这个字段,setHeader也只是覆盖了Content-Length,这是为什么。。。我tm太菜了嘛。。。)

    分析三:

      这次只能分析Transfer-Encoding: chunked了:

    分块编码(Transfer-Encoding: chunked)
    
    1、Transfer-Encoding,是一个 HTTP 头部字段(响应头域),字面意思是「传输编码」。最新的 HTTP 规范里,只定义了一种编码传输:分块编码(chunked)。
    
    2、分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。
    
    3、数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。
    
    4、具体方法
    a)在头部加入 Transfer-Encoding: chunked 之后,就代表这个报文采用了分块编码。这时,报文中的实体需要改为用一系列分块来传输。
    
    b)每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的 CRLF(
    ),也不包括分块数据结尾的 CRLF。
    
    c)最后一个分块长度值必须为 0,对应的分块数据没有内容,表示实体结束。
    

      big old: 看懂了吗?

      me: 没有

      big old: 呵呵(sb)

      大概意思是说:这东西是http的数据传输机制,一块块的传,不用考虑发送内容的总大小;

      me: 但是为什么生成的文件比不加Transfer-Encoding: chunked大了些,以至于打开文件时部分内容有问题(明明addHeader方法也设置了Content-Length)?

      big old: 

    参考文章1:https://www.cnblogs.com/raychou1995/p/10201878.html

    参考文章2:https://www.jianshu.com/p/da01a20a515e

      我也不知道为啥了,big old 来捶我吧!

  • 相关阅读:
    poj 3320 Jessica's Reading Problem
    uva 120 C
    vim使用教程-转自
    2015 俄罗斯网络赛 D. Boulevard
    HTML转义字符大全
    介绍个好点的,JAVA技术群
    JAVA学习路线
    linux常用命令大全(转)好东西要分享
    Jqprint 轻量级页面打印插件
    hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/steveshao/p/13143409.html
Copyright © 2011-2022 走看看