我想通過Http輸出流從Java客戶端發送一些非常大的文件(> 200MB)到運行在Tomcat中的servlet。需要通過http輸出流發送多個對象
我的當前協議封裝該文件的內容在一個byte[]
和被放置AA Map<String, Object>
一些元數據(文件名等),下一個「標準」的鍵中的每個部分("FILENAME"
沿 - >"Foo"
,"CONTENTS"
- >byte[]
, "USERID"
→1234
等)。 Map
被寫入URL連接輸出流(urlConnection.getOutputStream()
)。當文件內容很小時(< 25MB),這可以很好地工作,但是當文件大小非常大時,我遇到了Tomcat內存問題(OutOfMemoryError
)。
我想先發送元數據Map
,然後是文件內容,最後是文件數據的校驗和。接收方servlet可以從其輸入流中讀取元數據,然後讀取字節,直到整個文件完成,最後讀取校驗和。
在連接頭中發送元數據會更好嗎?如果是這樣,怎麼樣?如果我先將元數據先發送到套接字,然後再發送文件內容,那麼是否有某種標準協議可以做到這一點?
我認爲這正是我所需要的。我會調查。謝謝。 – Ralph