2017-02-23 14 views
1

アップロードAPIを使用してcsvファイルをアップロードする必要がありますが、フレームワークにthtaサポートを追加することが困難です。 私はツールとしてジャージーを使用しており、マルチパートサポートには以下の依存関係を使用しています。Jersey(Java)を使用してRest APIを使用してcsvファイルをアップロードするにはどうすればよいですか?

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

残りのAPIを使用してファイルアップロード(csv、xlsxなど)を実装するのに役立つサンプルコードがあります。

答えて

1

ファイルをサーバーにアップロードするには、たとえば、POSTを使用して、要求ペイロードにファイルの内容を送信します。リクエストのContent-Typemultipart/form-dataで、リソースメソッドには@Consumes(MediaType.MULTIPART_FORM_DATA)と注釈を付ける必要があります。

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

マルチパートの機能を使用するには、あなたがする必要がある:

ジャージーでは、次のように、リソースメソッドのパラメータにmultipart/form-data要求エンティティボディの名前の身体の一部(複数可)をバインドする@FormDataParam注釈を使用することができますあなたはMavenのは、すべての必要な依存関係を持っていることを確認し使用していない場合は、クラスパス上(jersey-media-multipartを参照)

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

:あなたのpom.xmlファイルにjersey-media-multipartモジュールを追加します。

また、あなたの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プロジェクトを検討することができます。

関連する問題