2016-08-05 6 views
0

ファイルをアップロードできるAPIを作成したいと思います。 私は遠隔地にログファイルをアップロードしたい。Jerseyでファイルをアップロードするエンドポイントを作成するにはどうすればよいですか?

サーブレットでは、リクエストからファイル名とその他の詳細を取得できます。 例:

Part filePart = request.getPart("fileName"); 
String fileName = filePart.getSubmittedFileName(); 
System.out.println(fileName); 
InputStream fileContent = filePart.getInputStream(); 

これをRESTで行う方法。

基本的に、ユーザーがファイルをアップロードできるエンドポイントを作成します。 ElasticsearchバルクAPIと同じように、ファイルとその内容をサーバーにロードします。

例:私は、サーバーにアップロードするコンテンツやファイルのメタデータを取得する方法私のREST APIで

curl -XPUT localhost:9200/_bulk --data-binary @data.log 

答えて

1

あなたは次のように、リソースメソッドのパラメータにmultipart/form-data要求エンティティボディの名前の身体の一部(複数可)をバインドする@FormDataParam注釈を使用することができます。

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

あなたが必要とするマルチパートの機能を使用するにはあなたのpom.xmlファイルにjersey-media-multipartモジュールを追加します。

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

あなたが作るsuコマンドをMavenを使用していない場合クラスパスに必要なすべての依存関係(jersey-media-multipartを参照)を持たせてください。また、MultiPartFeatureApplication/ResourceConfigサブクラスに登録することを忘れないでください。

詳細については、Jersey documentation about multipart requestsをご確認ください。

+1

こんにちは、私の質問[リンク](http://stackoverflow.com/questions/38849911/removing-meta-data-from-the-file)を参照してください、私がここで間違っていることを教えてくださいまたは私はどのようなアプローチを取るべきですか?私の仕事を達成するために。ありがとう。 –

関連する問題