Java 通过单个连接将多个文件发送到servlet

Java 通过单个连接将多个文件发送到servlet,java,http,servlets,file-upload,Java,Http,Servlets,File Upload,我正在编写一个Java桌面客户端,它将使用post请求通过线路将多个文件发送到一个servlet。在servlet中,我从接收文件的请求中获取输入流。当从流中读取文件时,servlet将一个接一个地将文件写入磁盘 实施有两个要求: 只有一个HTTP请求必须用于服务器(因此只有一个流) servlet必须使用合理的固定内存量,无论文件大小如何 我曾考虑过在流中插入标记,以便知道一个文件何时结束,下一个文件何时开始。然后,我将编写一些代码来解析servlet中的流,并根据需要开始编写下一个文件

我正在编写一个Java桌面客户端,它将使用post请求通过线路将多个文件发送到一个servlet。在servlet中,我从接收文件的请求中获取输入流。当从流中读取文件时,servlet将一个接一个地将文件写入磁盘

实施有两个要求:

  • 只有一个HTTP请求必须用于服务器(因此只有一个流)
  • servlet必须使用合理的固定内存量,无论文件大小如何
我曾考虑过在流中插入标记,以便知道一个文件何时结束,下一个文件何时开始。然后,我将编写一些代码来解析servlet中的流,并根据需要开始编写下一个文件

事情是这样的。。。肯定有图书馆可以做到这一点。我查看了apache commons,没有发现任何内容。Commons文件上传很有趣,但因为上传来自Java应用程序,而不是浏览器,所以它只解决接收端,而不是发送端

对于一个库,哪怕对于非常大的文件,也可以通过固定的内存期望轻松地在单个流上传输多个文件,您有什么想法


谢谢。

只需在POST请求正文上使用HTTP
多部分/表单数据
编码即可。中介绍了通过HTTP上载(多个)文件的标准方式

您可以像本文中所描述的那样使用它,尽管它会生成很多样板代码。一种更方便的方法是使用


在servlet端,您可以使用通常的HTTP方式处理上传的文件(或者当您已经使用servlet 3.0时,请参阅示例)。

非常好,谢谢BalusC,我缺少了HttpClient部分。这似乎正是我需要的。这里有一个代码示例()。我能看到的唯一有问题的部分是跟踪上传进度,但我怀疑我能够为此连接到FileBody。再次感谢。乔恩。@BalusC伙计,我真的希望你能看到这张我迷路了的信用证!我希望通过ajax在请求中发送多个文件和一个字符串参数,但我不确定如何将send参数构造为一个常规字符串参数,以及多个文件。我可以只做ajaxObject.send(string=string&file1=file1&file2=file2)?这个链接不带我去任何地方results@gmustudent当前位置你的第一个教程正是我现在正在做的。我有拖放功能,什么都有。我应该使用ajaxObject.send(formData+params)还是其他方法?或者这并不重要?在您的示例中,您只发送formData,但我也需要常规参数