2016-07-13 3 views
0

Jersey (2.22.2) & JaxRs를 사용하여 fileupload에 대한 지원을 구축하고 싶습니다. 이것은 POST 요청을 가로 챌 내 자원 방법Jersey 및 JaxR과 함께 작동하지 않는 다중 폼 데이터 데이터

@ApplicationPath("rest") 
public class DsmJaxRsApplication extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> classes = new HashSet<>(); 

     classes.add(FileUploadResource.class); 
     classes.add(MultiPartFeature.class); 

     return classes; 
    } 
} 

입니다 :

내 응용 프로그램입니다

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.TEXT_PLAIN) 
@Path("upload") 
public Response uploadImportFile(@FormDataParam("reason") String reason, 
           @FormDataParam("fileName") String fileName, 
           @FormDataParam("file") InputStream fileContent) { 
    checkCreateBulkChangeAllowed(); 

    return Response.ok().build(); 
} 

는 그리고 이것은 내 요청 페이로드 :

------WebKitFormBoundaryAh9J98cKgsOv6WCr 
Content-Disposition: form-data; name="reason" 

wwwww 
------WebKitFormBoundaryAh9J98cKgsOv6WCr 
Content-Disposition: form-data; name="fileName" 

DSM_CH_Bulk_new.xlsx 
------WebKitFormBoundaryAh9J98cKgsOv6WCr 
Content-Disposition: form-data; name="file"; filename="DSM_CH_Bulk_new.xlsx" 
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 


------WebKitFormBoundaryAh9J98cKgsOv6WCr-- 

문제 그 방법 안에는 fileContentreason이 있습니다. 그 이유는 "wwww"이어야하고 fileName은 항상 null입니다. 누구나 내가 뭘 잘못하고 있는지, 내가 무엇을 놓치고 있는지 알 수 있습니까?

답변

0

내 구성은 web.xml 파일을 기반으로합니다. 추가하려고 FormDataContentDisposition

@POST 
@Path("upload/file") 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
public Response uploadInspectionFile(@FormDataParam("file") InputStream inputStream, 
     @FormDataParam("file") FormDataContentDisposition content, 
     @FormDataParam("path") String path) 

UPDATE 여기

내 서블릿 내 web.xml 파일에 있습니다

<properties> 
    <jersey.version>2.22.1</jersey.version> 
    <jackson.version>2.6.1</jackson.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<version>1</version> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.4.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>5.0.7.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.9</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.39</version> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-common</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.5.0-b01</version> 
    </dependency> 

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

    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.quartz-scheduler</groupId> 
     <artifactId>quartz</artifactId> 
     <version>2.2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>io.swagger</groupId> 
     <artifactId>swagger-jersey2-jaxrs</artifactId> 
     <version>1.5.9</version> 
    </dependency> 

    <dependency> 
     <groupId>io.swagger</groupId> 
     <artifactId>swagger-annotations</artifactId> 
     <version>1.5.9</version> 
    </dependency> 

</dependencies> 
:

<servlet> 
    <servlet-name>servlet_inspector</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>io.swagger.jaxrs.listing,com.sagasoftware.service;com.sagasoftware.custom.filter</param-value> 
    </init-param> 
    <init-param> 
     <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value> 
      org.glassfish.jersey.media.multipart.MultiPartFeature , 
      io.swagger.jaxrs.listing.ApiListingResource, 
      io.swagger.jaxrs.listing.SwaggerSerializers, 
    </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

여기 내 의존성이다

+0

' FormDataContentDisposition' 및 해당 객체도 null이며 web.xml 구성을 제공 할 수 있습니까? 아마도 여기에서 알아낼 수 있습니다. – Marius

+0

@ 마리우스 내 대답을 업데이트했습니다. 또한 나는 사람들이 최종 FormDataMultiPart 엔터티를 사용하는 것을 보았다. 귀하의 리소스 메서드는 다음과 같아야합니다 : public Response uploadImportFile (final FormDataMultiPart entity) {....} –

관련 문제