2016-08-05 3 views
0

Ich möchte eine API schreiben, mit der ich Dateien hochladen kann. Ich möchte die Protokolldatei an meinen Remote-Standort hochladen.Wie erstellt man einen Endpunkt zum Hochladen von Dateien in Jersey?

Im Servlet kann ich fileName und andere Details der Datei von der Anfrage erhalten. ZB:

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

Wie dies in REST tun.

Grundsätzlich möchte ich einen Endpunkt erstellen, wo der Benutzer Datei hochladen kann. Wie Elasticsearch Bulk API, wo ich die Datei und ihren Inhalt geben werde auf dem Server geladen.

ZB:

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

In meinem REST-API, wie ich den Inhalt und Metadaten der Datei auf den Server laden zu bekommen.

Antwort

1

könnten Sie verwenden die @FormDataParam Annotation die benannte Körperteil (e) eines multipart/form-data Anforderungsentität Körper auf eine Ressource Methodenparameter zu binden, wie folgend:

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

Multipart-Features Sie verwenden müssen,

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

Wenn Sie mit Maven machen su nicht: das jersey-media-multipart Modul zu Ihrer pom.xml Datei hinzufügen Alle erforderlichen Abhängigkeiten (siehe jersey-media-multipart) für den Klassenpfad. Und vergessen Sie nicht, die MultiPartFeature in Ihrer Application/ResourceConfig Unterklasse zu registrieren.

Für weitere Details, überprüfen Sie die Jersey documentation about multipart requests.

+1

Hallo Herr, Bitte beziehen Sie sich auf meine Frage [link] (http://stackoverflow.com/questions/38849911/removing-meta-data-from-the-file) und lassen Sie mich bitte wissen, was ich hier falsch mache oder welchen Ansatz sollte ich nehmen? Um meine Aufgabe zu erfüllen. Danke. –

Verwandte Themen