Java 需要通过http输出流发送多个对象

Java 需要通过http输出流发送多个对象,java,http,servlets,Java,Http,Servlets,我试图通过Http输出流将一些非常大的文件(>200MB)从Java客户机发送到运行在Tomcat中的servlet 我的协议目前将文件内容打包在一个字节[]中,并将其与一些元数据(文件名等)一起放置在一个映射中,每个部分都放在一个“标准”键下(“文件名”->“Foo”,“内容”->字节[],“用户ID”->1234,等等)。映射将写入URL连接输出流(urlConnection.getOutputStream())。如果文件内容很小(您几乎肯定会希望使用a将数据发送到服务器。然后在服务器上,您

我试图通过Http输出流将一些非常大的文件(>200MB)从Java客户机发送到运行在Tomcat中的servlet


我的协议目前将文件内容打包在一个
字节[]
中,并将其与一些元数据(文件名等)一起放置在一个
映射中,每个部分都放在一个“标准”键下(
“文件名”
->
“Foo”
“内容”
->
字节[]
“用户ID”
->
1234
,等等)。
映射将写入URL连接输出流(
urlConnection.getOutputStream()
)。如果文件内容很小(您几乎肯定会希望使用a将数据发送到服务器。然后在服务器上,您可以使用类似的方式来处理上载

commons fileupload的好处在于,它知道服务器可能没有足够的内存来缓冲大型文件,一旦上传的数据超过一定大小,就会自动将其流式传输到磁盘,这对于避免
OutOfMemoryError
类型问题非常有帮助


否则,你将不得不自己实现类似的功能。打包和发送数据的方式其实没有多大区别,只要服务器能够1)解析上传数据,2)将数据重定向到文件,这样它就不必一次在内存中缓冲整个请求。如上所述,这两个都是免费的,如果你使用Calon FieluPoad,所以这绝对是我推荐的。

< P>我没有直接的答案,但是你可以考虑使用FTP。ApacheMina提供FTPLets,本质上是响应FTP事件的servlet(有关详细信息,请参阅)

这将允许您以任何格式推送数据,而无需接收端在内存中容纳整个数据


问候。

我想这正是我需要的。我会调查的。谢谢