我有一個Struts 1 web應用程序,需要將相當大的文件(> 50 MBytes)從客戶端上傳到服務器。我目前使用其內置的org.apache.struts.upload.DiskMultipartRequestHandler來處理HTTP POST multipart/form-data請求。它工作正常,但速度非常慢,上傳速度約爲每秒100千字節。Struts上傳速度較慢
將相同的大文件從服務器下載到客戶端的速度要快10倍以上。我不認爲這只是我的ISP的上傳和下載速度之間的差異,因爲使用簡單的FTP客戶端將文件傳輸到同一臺服務器的時間不到三分之一。
我已經着眼於用新的org.apache.commons.fileupload包替換內置的DiskMultipartRequestHandler,但我不確定如何修改它以創建Struts 1需要的MultipartRequestHandler。
Barend下面評論說,有一個'bufferSize'參數可以在web.xml中設置。我將緩衝區的大小增加到了100 KB,但並未提高性能。看看DiskMultipartRequestHandler的實現,我懷疑它的性能可能是有限的,因爲它一次讀取一個字節的流,查找多部分邊界字符。
是否有其他人使用Struts上傳大文件?
有沒有人定製了Struts 1提供的默認DiskMultipartRequestHandler?
我是否需要在上傳大文件時更耐心呢? :-)
這是一個好主意!之前我沒有注意到。謝謝!不幸的是,我現在剛剛嘗試過,並沒有真正改變。 – 2009-04-14 13:59:31