我有一个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