2017-06-09 26 views
2

在上傳doc文件(例如爲Test.doc)到服務器(UNIX的機器),我使用apache commons罐子,給了我FormFile例如在服務器端其爲具有所有數據都以字節數組的形式存在。微軟Word文件下載問題的servlet從UNIX服務器到Windows

當我將相同的字節數組寫入響應輸出流併發送給瀏覽器以下載相同的文件時,會顯示奇怪的內容。我得到一個彈出選擇編碼,其中我想看到的數據和怪異的數據顯示在doc.The內容類型設置如下:

response.setContentType("application/msword"); 
response.setHeader("Content-Disposition", "attachment;filename=test.doc"); 

我覺得在寫數據到輸出流,也會編寫與doc文件相關的元數據,從而導致此問題。

是否有任何特定的文檔或docx文件格式,需要這樣做文件是適當的格式,我可以看到正確的數據,我上傳或我失去了一些東西?

任何幫助,將不勝感激。

在此先感謝。

讓我知道是否需要更多信息。

+1

文件是文件;沒有對文件內容進行任何操作。當您下載內容時,更有可能您的內容設置存在問題。 –

+0

上傳時如何閱讀輸入流?下載時如何編寫輸出流? –

+0

我找到了解決方案。在讀取和寫入數據時沒有任何問題。相反,問題在於其中一個過濾器弄亂了響應。我非常感謝迄今收到的所有答覆。感謝大家。 –

回答

0

提供的解決方法可能不適合你的問題的修正,因爲我還沒有亂跑任何測試。但是,按正確的MIME類型,請參考此鏈接:

https://technet.microsoft.com/en-us/library/ee309278(office.12).aspx

更新時間:

您可以使用響應類型爲ArrayBuffer並設置內容作爲Blob。

Blob([response], {type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'}); 

或者這可能是工作

response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment; filename="+ fileName);