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");