当前位置: 首页 > 知识库问答 >
问题:

Quarkus多文件上载

伯晨
2023-03-14

嗨,我正在尝试使用多部分表单上传多个文件

我使用这个,但我得到了错误的请求状态,我如何上传多个文件?


public class AttachmentBody {

    @FormParam("files")
    @PartType(MediaType.APPLICATION_OCTET_STREAM)
    public InputStream[] files;

}

共有1个答案

东郭勇
2023-03-14

我在一个部分工作,我认为这将有助于多个文件上传。我使用的是RestEasy和Kwkus框架。找到下面的代码。

import java.io.File;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;

import org.apache.commons.io.IOUtils;
import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;
import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;

@Path("/multiupload")
public class MultiFileUploadController {

    private static String UPLOAD_DIR = "E:/sure-delete";

    @POST
    @Path("/files")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.TEXT_PLAIN)
    public Response handleFileUploadForm(@MultipartForm MultipartFormDataInput input) {
    
        Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
        List<String> fileNames = new ArrayList<>();
    
        List<InputPart> inputParts = uploadForm.get("file");
        System.out.println("inputParts size: " + inputParts.size());
        String fileName = null;
        for (InputPart inputPart : inputParts) {
            try {
    
                MultivaluedMap<String, String> header = inputPart.getHeaders();
                fileName = getFileName(header);
                fileNames.add(fileName);
                System.out.println("File Name: " + fileName);
                InputStream inputStream = inputPart.getBody(InputStream.class, null);
                byte[] bytes = IOUtils.toByteArray(inputStream);
    
                File customDir = new File(UPLOAD_DIR);
                fileName = customDir.getAbsolutePath() + File.separator + fileName;
                Files.write(Paths.get(fileName), bytes, StandardOpenOption.CREATE_NEW);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        String uploadedFileNames = String.join(", ", fileNames);
        return Response.ok().entity("All files " + uploadedFileNames + " successfully.").build();
    }
    
    private String getFileName(MultivaluedMap<String, String> header) {
        String[] contentDisposition = header.getFirst("Content-Disposition").split(";");
        for (String filename : contentDisposition) {
            if ((filename.trim().startsWith("filename"))) {
                String[] name = filename.split("=");
                String finalFileName = name[1].trim().replaceAll("\"", "");
                return finalFileName;
            }
        }
        return "unknown";
    }
}

要从邮递员客户端进行测试,请在图像下方找到。

您可以将其作为一个示例,也可以处理异常。

 类似资料:
  • 我正在尝试设置一个endpoint,允许多个文件上传,以及其他表单数据。将其视为一个创建产品页面,其中包含两个产品图像以及其他信息。理想情况下,我希望将请求映射到POJO POJO: 但这不管用,我明白了: 如果我删除,它就可以正常工作。 看来< code>List也有同样的问题 哪个抛出 : 我已经看到了使用

  • egg 多文件上传 >[danger] 如果要获取同时上传的多个文件,不能通过ctx.getFileStream()来获取 > 需要通过 ctx.multipart({ autoFields:true }) 获取 > autoFields: true 表示获取除了文件字段以外的其他信息字段 用户可以通过在config/config.default.js中配置来新增支持的文件扩展名,或者重写整个白名

  • 问题内容: 我需要处理分散在各个目录中的多个文件。我想将所有这些加载到单个RDD中,然后在其上执行map / reduce。我看到SparkContext能够使用通配符从单个目录加载多个文件。我不确定如何从多个文件夹加载文件。 以下代码段失败: 这在第三个循环中失败,并显示以下错误消息: 鉴于我仅提供了两个参数,所以这很奇怪。任何指针表示赞赏。 问题答案: 措辞如何呢? 在Scala中,有两种变体

  • 本文向大家介绍java 文件上传(单文件与多文件),包括了java 文件上传(单文件与多文件)的使用技巧和注意事项,需要的朋友参考一下 java 文件上传(单文件与多文件) 一、简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。

  • 本文向大家介绍详解SpringBoot文件上传下载和多文件上传(图文),包括了详解SpringBoot文件上传下载和多文件上传(图文)的使用技巧和注意事项,需要的朋友参考一下 最近在学习SpringBoot,以下是最近学习整理的实现文件上传下载的Java代码: 1、开发环境: IDEA15+ Maven+JDK1.8 2、新建一个maven工程:   3、工程框架   4、pom.xml文件依赖项

  • 在纯模式下将Quarkus服务从版本 2.5 迁移到 2.6 时,我遇到了以下情况,如下所示: 我们有一个JAR,它包含几个服务使用的遍历对象的定义,其中包含javax.validation中使用的验证消息。约束:在名为ValidationMessages.properties的文件中定义的注释 在版本 2.5 之前,我可以将此 jar 作为服务依赖项的一部分,它执行服务的本机编译,并设法通过上下