gpt4 book ai didi

java - 使用单个连接将多个文件发送到 servlet

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:07 25 4
gpt4 key购买 nike

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

实现有几个要求:

  • 只能对服务器使用一个 HTTP 请求(因此只有一个流)
  • 无论文件大小如何,servlet 都必须使用合理的固定内存量。

我考虑过在流中插入标记,这样我就知道一个文件何时结束以及下一个文件何时开始。然后我会编写一些代码来解析 servlet 中的流,并开始编写适当的下一个文件。

事情是这样的……肯定有一个图书馆可以做到这一点。我查看了 apache commons,但一无所获。 Commons File Upload 很有趣,但由于上传来自 Java 应用程序,而不是浏览器,因此它只能解决接收端问题,而不是发送问题。

对于一个即使对于非常大的文件,也可以轻松地允许跨单个流进行多个文件传输并具有固定内存期望的库,有什么想法吗?

谢谢。

最佳答案

只需在 POST 请求主体上使用 HTTP multipart/form-data 编码。在 RFC-2388 中进行了描述以及通过 HTTP 上传(多个)文件的标准方式。

你可以只用 java.net.URLConnection如本 mini-tutorial 中所述,尽管它会生成大量样板代码。一种更方便的方法是使用 Apache Commons HttpClient .

在 servlet 端你可以使用 Apache Commons Fileupload以通常的 HTTP 方式处理上传的文件(或者当您已经在 Servlet 3.0 上时, HttpServletRequest#getParts() ,另请参阅 this answer 以获取示例)。

关于java - 使用单个连接将多个文件发送到 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com