Jersey 2 injection source for multipart formdata

后端 未结 5 938
既然无缘
既然无缘 2020-11-30 07:50

I had a method:

@POST
@Consumes(\"multipart/form-data\")
@Produces( {\"text/xml\"})
public Response processForm(
    @FormDataParam(\"myparam\") InputStream          


        
5条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-30 08:02

    You need to enable MultiPart feature on your application. Enabling this feature injects necessary message body readers, writers to your Jersey 2 application. Here is how you register them:

    On the server-side (http-server):

    final ResourceConfig resourceConfig = new ResourceConfig(MultiPartResource.class);
    resourceConfig.register(MultiPartFeature.class);
    

    On the server-side (servlet deployment):

    import org.glassfish.jersey.filter.LoggingFilter;
    import org.glassfish.jersey.media.multipart.MultiPartFeature;
    
    import javax.ws.rs.core.Application;
    import java.util.HashSet;
    import java.util.Set;
    
    public class MyApplication extends Application {
        @Override
        public Set> getClasses() {
            final Set> classes = new HashSet>();
            // register resources and features
            classes.add(MultiPartFeature.class);
            classes.add(MultiPartResource.class);
            classes.add(LoggingFilter.class);
            return classes;
        }
    }
    

    web.xml

    
        
        
            Jersey Servlet
            org.glassfish.jersey.servlet.ServletContainer
            
                javax.ws.rs.Application
                com.aruld.jersey.multipart.MyApplication
            
            1
        
        
            Jersey Servlet
            /*
        
    
    

    On the client-side:

    final ClientConfig clientConfig = new ClientConfig();
    clientConfig.register(MultiPartFeature.class);
    Client client = ClientFactory.newClient(clientConfig);
    

    I put together an end-to-end Jersey 2 MultiPart sample in Github here.

提交回复
热议问题