2017-02-23 116 views
1

我有要求通過上傳API上傳csv文件,但很難在框架中添加支持。 我使用球衣作爲工具,並使用下面的maven依賴關係進行多部分支持。如何使用Jersey(Java)通過Rest API上傳csv文件?

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

請幫助一些示例代碼來幫助我通過Rest API實現文件上傳(csv,xlsx等)。

回答

1

要上傳文件到服務器,您可以使用例如POST發送請求有效負載中的文件內容。請求的Content-Type應爲multipart/form-data,並且您的資源方法必須使用@Consumes(MediaType.MULTIPART_FORM_DATA)進行註釋。

在新澤西,你可以使用@FormDataParam註釋到multipart/form-data請求實體主體的命名主體部分(S)綁定到資源的方法參數,如下:

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

要使用多的功能,你需要如果你不使用Maven確保有需要的所有依存關係(見jersey-media-multipart)在類路徑上

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

:在jersey-media-multipart模塊添加到您的pom.xml文件。

您還需要在Application/ResourceConfig子類註冊MultiPartFeature

@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項目。