我正在開發一個簡單的servlet,它應該通過http來提供文檔。我使用/ getDocument?fileId = 1234形式的URL。 servlet簡單地1)設置response.contentType和2)寫入response.outputStream。如何指定文檔的響應內容類型以便在瀏覽器中一致地工作?
問題是關於正確設置內容類型以使瀏覽器瞭解響應(即使用正確的應用程序顯示文檔)。特別是:
a)對於PDF文件,如果我將內容類型設置爲「application/pdf」,Internet Explorer可以理解(立即顯示文檔),但Firefox不會顯示空白頁面而不嘗試打開任何pdf查看器插件) 。如果我將它設置爲「application/x-octetstream」,Firefox會理解它(正確顯示它),但Internet Explorer在要求保存或打開它時會顯示「未知文件類型」。 b)Firefox理解「application/msword」和「application/vnd.ms-excel」,但Internet Explorer的確很奇怪,不是簡單的說「未知文件類型」。
是否有可能讓它在所有瀏覽器中一致地工作,如果是這樣,爲各種文檔類型設置內容類型的正確方法是什麼?有沒有其他的應該被設置在響應中,以便這樣做能正常工作?或者,正如我懷疑的那樣,當URL沒有以相應的文件擴展名結尾時,瀏覽器是否會感到困惑? (即,getFile?fileId = 1234而不是例如getFile/test.pdf)
謝謝,那是我正在尋找的信息。 – 2010-02-11 13:34:40
世界級的答案。 – 2010-02-11 15:10:20
據我所知,IE *處理MIME類型。例如,請參閱http://greenbytes.de/tech/tc2231/#attwithasciifilename上的測試用例。 – 2010-02-12 12:56:54