2009-05-04 177 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();