您的位置:首页 > 其它

(转)activiti模型导出——衍生response响应方式解析

2018-02-13 14:38 369 查看

原链接:http://blog.csdn.net/II_bat/article/details/51490131

在activiti工作流的模型导出时遇到一个问题,平均以10kb大小为界限,10kb以内的能够正常导出,超过10kb的浏览器会直接在页面预览,不能正常导出。

经过各种方式测试与大量对比网上资料,发现文件response存在一个分块输出的原理,一旦文件过大就会将文件分成一块一块的字节流输出,一旦response进行了分块操作,那么设置Header的时候就一定要注意,一定要在输出流执行之前进行初始化(设置response的各种属性)。

个人理解(不懂原理,只能这样了):

文件小,response不需要分块操作,所以你在response执行完毕之前设置属性都可以,因为只有一个输出流进行操作。

但是一旦文件过大,进行分块后有多个输出流执行,这时候设置属性,response就不知道如何进行解析定位(或者是将属性赋予了第一个输出流,后面的使用默认属性)。

由于response使用的是缓存机制,一个输出流响应后匹配属性正常,多个输出流分块后匹配一个属性设置,要么无法匹配,要么匹配其中一个,就导致最终响应头属性设置失败,后果就是下载变成了预览功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: