有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Jersey(Java)通过RESTAPI上传csv文件?

我有一个通过上传API上传csv文件的要求,但很难在框架中添加thta支持。 我使用jersey作为工具,并使用maven依赖项实现多部分支持

<dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>2.25</version>
</dependency>

请提供一些示例代码,帮助我通过RESTAPI实现文件上传(csv、xlsx等)


共 (1) 个答案

  1. # 1 楼答案

    要将文件上载到服务器,可以使用^{}等命令发送请求负载中的文件内容。请求的^{}应该是multipart/form-data,并且您的资源方法必须用@Consumes(MediaType.MULTIPART_FORM_DATA)注释

    在Jersey中,可以使用^{}注释将multipart/form-data请求实体体的命名体部分绑定到资源方法参数,如下所示:

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response upload(@FormDataParam("file") InputStream inputStream,
                           @FormDataParam("file") FormDataContentDisposition fileMetaData) {
        ...
    }
    

    要使用多部分功能,您需要将^{}模块添加到pom.xml文件中:

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.25.1</version>
    </dependency>
    

    如果没有使用Maven,请确保类路径上有所有需要的依赖项(请参见^{}

    您还需要在^{}/^{}子类中注册^{}

    @ApplicationPath("/api")
    public class MyApplication extends Application {
       
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(MultiPartFeature.class);
            return classes;
        }
    }
    
    @ApplicationPath("/api")
    public class MyApplication extends ResourceConfig {
    
        public MyApplication() {
            register(MultiPartFeature.class);
        }
    }
    

    有关更多详细信息,请查看Jersey documentation about multipart requests

    如果需要操作XLS/XLSX文件,可以考虑Apache POI项目。