我已經在AppEngine數據存儲之上實現了基本的文件上傳/下載。
我想要的功能是名爲「base.c」的文件將作爲文本文件打開。 所以我做了以下內容:
(當然我的代碼是一般情況下,但是這個具體的例子說明了這個問題)如何在用戶使用「另存爲」時選擇文件名?
resp.setContentType("text/plain");
resp.setHeader("Content-Disposition", "inline; filename=base.c");
這將打開它在瀏覽器中的文本文件,這是我需要的。
但我也希望當用戶使用瀏覽器的「保存頁面作爲..」選項時,它將提供「base.c」的初始名稱。 它在firefox(6)中的確如此,但它在chrome(15)和safari(5)上給出了默認名稱「download」。
更糟 - 當選擇base.c作爲文件名chrome警告用戶這是錯誤的擴展名並要求確認才能繼續。
現在,如果我使用「附件」而不是「內聯」,它不會打開文件,而是使用右邊的名稱下載它。
我能做些什麼來使默認保存爲.. name是「base.c」?
這是瀏覽器的錯誤還是我濫用HTTP頭?
(如果是任何幫助,所有的測試都是在OSX 10.6與下載網站是何許:
http://------.appspot.com/download?name=base.c)
文件系統上沒有實際的靜態文件。它由servlet從數據存儲中輸出。 – Danish94
對不起,我不熟悉GAE。您是否嘗試過在web.xml配置中使用url-pattern?我編輯了我的答案 – scott
@丹尼斯:這一定是有效的。你只需要通過'request.getPathInfo()。substring(1)'而不是'request.getParameter(「name」)'來獲取文件名。另請參閱http://balusc.blogspot.com/2007/07/fileservlet.html。 – BalusC