文件下载,如何替换掉底层的FileRender

现在自己获取response写下载,这部分有问题,因为底层封装了FileRender,会报输出流已经获取了。目前附件是存储在阿里云上的,再写入本地,这个感觉就没有必要了。有没有解决的办法,比如继承Render这样

评论区

晴天的雾霾

2017-09-26 10:03

使用的是阿里云的oss服务器下载文件,返回字节数组,直接浏览器下载,目前测试了一下,输出流关闭之后,使用了renderNull();感觉没有问题,不知道是否还有别的解决方案

JFinal

2017-09-26 14:49

@晴天的雾霾 做一个 public class MyRenderFactory extends RenderFactory ,并覆盖掉父类的 getFileRender() 方法,最后再配置一下:
me.setRenderFactory(new MyRenderFactory())

就可以将 FileRender 切换成自己的实现类了,同理,这种方式可以切换掉 Controller 中所有的 renderXxx(...) 方法

还有一个简单的办法是,做一个 MyFileRender(...),然后用的时候这样:
render(new MyFileRender(...))
这种是最快的

热门反馈

扫码入社