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

以下为个人想法,仅限参考,如有不对,欢迎留言更正:


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

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

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

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

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


由于response使用的是缓存机制,一个输出流响应后匹配属性正常,多个输出流分块后匹配一个属性设置,要么无法匹配,要么匹配其中一个,就导致最终响应头属性设置失败,后果就是下载变成了预览功能。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值