2013-11-03 73 views
3

我的服務器上有一個名爲「MyFile.doc」的文件,同一個實例中有一個jsp文件。在jsp中有一個重定向,如:response.sendRedirect(「MyFile.doc」);.當用戶訪問我的jsp文件時,我想將該文件作爲「MyFile_XYZT.doc」。簡而言之,應該使用動態創建的ID下載它。如何在下載過程中更改文件名

我搜索了一下關於Content-Disposition方法。

任何想法?

+1

如何嘗試實施您找到的解決方案,看看它是否正常工作? –

回答

6

我搜索了一下關於Content-Disposition方法。

對,這就是你如何告訴瀏覽器你希望如何處理響應,包括可選地給出下載的建議文件名。

雖然我不認爲這裏有任何一行。您需要將服務器配置爲返回MyFile.doc以及相關的Content-Disposition標題,或者如果您想用JSP中的代碼控制名稱,則必須使用setHeader自己發送響應以設置Content-Disposition標題。例如:

response.setHeader("Content-Disposition", "attachment; filename=\"MyFile_XYZT.doc\""); 

...然後打開文件,讀取其內容併發送響應中的內容。這不是很多代碼(可能是四到五行),但它不是一行代碼。

+0

感謝您的回答。如果我像你一樣使用response.setHeader,它會將所有下載的文件命名爲「MyFile_XYZT.doc」,因爲它是爲「filename」參數編寫的? – ftb

+1

@ftb:它會*向瀏覽器建議*,它應該使用該名稱作爲您發送的響應的內容。當然,如果你想在每個請求上使用不同的名字,你可以用字符串連接來完成。關鍵在於您需要發送標題,然後將文件內容作爲響應流出。您無法發送重定向。 –