2009-05-04 179 views
0

我们正在运行tomcat,我们正在生成pdf文件。我之前没有文件大小,所以我无法直接链接到服务器上的文件。所以我直接发送输出。Jsp下载文件大小

response.setContentType("application/force-download"); 
OutputStream o = response.getOutputStream(); 

然后我直接输出到这个OutputStream。

唯一的问题是接收器没有得到文件大小,所以他们不知道下载将花费多长时间。有没有办法告诉响应文件有多大?

编辑 我知道文件大小,我只是不能告诉STREAM文件有多大。

回答

5

响应对象应该有一个setContentLength方法:

// Assumes response is a ServletResponse 
response.setContentLength(sizeHere); 
1

将PDF字节流序列化到文件或字节数组中计算其大小,设置大小并将其写入输出流。

+0

我有PDF格式的文件。我需要告诉STREAM文件有多大。 – Milhous 2009-05-04 15:58:56

+0

这非常低效,特别是对于大型PDF文件,并且如果通知用户剩余下载时间是一个问题,则文件很可能很大。 – 2009-05-04 16:02:04

+0

嗯,它只是一个可以从2-56MB的pdf。 – Milhous 2009-05-04 16:05:22

0

我beleive你ansering的qustion你自己: 报价: 我没有前手的文件大小,所以我直接发送输出。

如果你没有,你不能把它的大小....

+0

大小不是静态的,但当我发送页面时我知道它。 – Milhous 2009-05-04 15:56:42

0

为什么到临时文件系统,或冲压基本文件系统或内存映射文件上飞不生成PDF文件。那么你可以得到文件大小。

response.setContentType(“application/force-download”); response.setContentLength(sizeHere); OutputStream o = response.getOutputStream();