Java 一个http mutlipart请求能否将文件拆分为多个部分?

Java 一个http mutlipart请求能否将文件拆分为多个部分?,java,rest,jakarta-ee,multipartform-data,resteasy,Java,Rest,Jakarta Ee,Multipartform Data,Resteasy,表单中的文件是否在多部分/form data请求中作为不同部分发送 我必须将一个文件从我的表单发送到一个REST端点 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.jboss.resteasy.plugins.providers.multipart.InputPart; import org.jboss.resteasy.plugins.providers.multipart.Multi

表单中的文件是否在
多部分/form data
请求中作为不同部分发送

我必须将一个文件从我的表单发送到一个REST端点

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;

public class BulkUploadTask {


    public void readFile(MultipartFormDataInput input) throws IOException, InvalidFormatException{

        Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
        List<InputPart> inputParts = uploadForm.get("file");

        for (InputPart part : inputParts) {

            InputStream inputStream = part.getBody(InputStream.class, null);


        }
    }

}
文件能否拆分为不同的部分

我应该只考虑第一部分:


uploadForm.get(“file”).get(0)

发布表单时,您会发送一个键值对列表,但每个键值可以使用不同的值多次出现。在编程中,这种类型的结构称为
ListMultimap
(或潜在的SetMultiMap)

表单通常使用
application/x-www-form-urlencoded
进行编码,这意味着只允许使用字符串值。如果需要上载文件,则需要使用
多部分/表单数据
,但是同一个键仍然可以保存多个值

多部分文件并不意味着文件被分割成多个部分,而是意味着请求被分割成多个部分。每个部分由一个普通的基于字符串的值或一个文件(和元数据)组成,每个参数由一个边界分隔

如果您创建了一个
multipart/form data
form,并且有5个文件上载字段都命名为“file”,并且在每个字段中上载了不同的文件,那么
List inputParts=uploadForm.get(“file”)
将返回一个大小为5的列表,对于名为“file”的键,每个值对应一个列表


在大多数情况下,UI只有一个上载字段,在这种情况下,我只使用
uploadForm.get(“文件”).get(0)
,并可能检查列表的大小,如果大小大于1(或者如果需要文件,则正好是1),则引发异常。

发布表单时,您会发送一个键值对列表,但每个关键点都可以使用不同的值出现多次。在编程中,这种类型的结构称为
ListMultimap
(或潜在的SetMultiMap)

表单通常使用
application/x-www-form-urlencoded
进行编码,这意味着只允许使用字符串值。如果需要上载文件,则需要使用
多部分/表单数据
,但是同一个键仍然可以保存多个值

多部分文件并不意味着文件被分割成多个部分,而是意味着请求被分割成多个部分。每个部分由一个普通的基于字符串的值或一个文件(和元数据)组成,每个参数由一个边界分隔

如果您创建了一个
multipart/form data
form,并且有5个文件上载字段都命名为“file”,并且在每个字段中上载了不同的文件,那么
List inputParts=uploadForm.get(“file”)
将返回一个大小为5的列表,对于名为“file”的键,每个值对应一个列表

在大多数情况下,UI将只有一个上载字段,在这种情况下,我将只使用
uploadForm.get(“文件”).get(0)
,并可能检查列表的大小,如果大小大于1(或者如果需要文件,则正好是1),则引发异常

List<InputPart> inputParts = uploadForm.get("file");