首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
renderFile
hankingxu
2018-06-12 09:41
@波总
用renderFile 下载文件说的时候,,每次客户端下载一次,为啥服务器上也会下载一次,怎么样取消服务器端的下载
项目:
JFinal
评论区
JFinal
2018-06-12 10:09
到底是在哪里下载的? 如果你在客户端操作下载这个动作, 那么什么叫做服务端下载了一次?
回复
hankingxu
2018-06-12 14:52
@JFinal
我实在客户端下载这个文件,但是我在服务器端Tomcat bin目录下发现,我每次下载一个文件在bin中都有相应的下载。。
回复
hankingxu
2018-06-12 15:13
@JFinal
我发现问题了,renderFile时候,新建了 file = new File(shipname+rep+".xls"); ,,是不是renderFlie的时候,必须新建file,,这样在服务器端就会建立个同样的文件。。怎么办
回复
JFinal
2018-06-12 15:28
@hankingxu
这个不是本质问题, 如果你只是 new File(...) ,但并没有往 FileOutputStream 这种流里面写东西,文件仍然是不会创建的
无论如何,jfinal 是不会帮你创建下载文件的,仔细查看一下自己的相关代码
回复
hankingxu
2018-06-12 15:48
@JFinal
嗯嗯,说的有道理,我每次下载的文件,都是根据数据库最新数据生成的,所以我每次下载的时候,都会新建一个file 然后往里面写东西,然后下载,导致了服务器有好多下载文件,,怎么样才能新建file 的时候,可以往里面写东西,然后下载,实际上不会在服务器端生成文件。。
回复
JFinal
2018-06-12 16:09
@hankingxu
照着 jfinal 的 FileRender 做一个 MyFileRender 出来即可,大致方法如下:
1: 先拷贝 FileRender 中所有的代码到 MyFilRender 中去
2:删掉 rangeRender() 这个方法(这个是用于断点续传的)
3:关键点在于改造 normalRender() 方法中的new BufferedInputStream(...) , 将原来的从 FileInputStream 中读取数据改成从你数据来源的那个流里面读取。
这样做的好处就是可以避免掉你以往的构建实体文件的环节
当然,上面是主要过程,里头可能有一些小细节,都不重要了
记得搞定后,回来在分享频道分享出来
回复
JFinal
2018-06-12 16:38
@hankingxu
最后在使用的时候这样来用:
render(new MyFileRender(...));
回复
发送
我要反馈
热门反馈
扫码入社