[JAVA] Empfangen von mehrteiligen / Formulardaten mit Jerjey (Jax-rs)

Einführung

In [Android] Hochladen von Bildern vom Terminal auf den Server war die empfangende Seite Servlet. Ich wollte es unbedingt bei Jerjey erhalten, wusste aber nicht, was ich tun sollte, und machte Kompromisse. Ich habe diesmal herausgefunden, wie das geht, also werde ich es vorstellen.

Umgebung

Entsprechen mehrteiligen / Formulardaten

Bitte laden Sie Folgendes herunter.

Pass den Weg durch diese beiden.

Anwendungsklasse erstellen

Mehrteilige / Formulardaten können derzeit noch nicht verwendet werden, also im Paket des Projekts, das Sie unterstützen möchten Erstellen Sie [ApplicationConfig.java] und kopieren Sie Folgendes und fügen Sie es ein.

ApplicationConfig.java


package com.Sample.api;

import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;

public class ApplicationConfig extends ResourceConfig {
   public ApplicationConfig() {
     packages("pakage").register(MultiPartFeature.class);
   }
}

Bitte geben Sie den Namen des Pakets ein, das in "Paket" verwendet werden soll. Ändern Sie dann [Web.xml].

Web.xml


<servlet>
  <servlet-name>jersey-app</servlet-name>
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <!--Hier"pakage.ApplicationConfig"Ist der Pfad der oben erstellten Klasse.-->
    <param-value>pakage.ApplicationConfig</param-value>
  </init-param>

  <init-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
 </servlet>

Damit ist die Unterstützung von Mehrteil- / Formulardaten abgeschlossen.

Implementierung

Erstellen Sie die folgende Klasse.

Upload.java


import static java.nio.file.StandardCopyOption.*;

import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;

@Path("/Upload")
public class Upload {
	@POST
	@Path("/File")
	@Consumes(MediaType.MULTIPART_FORM_DATA)
	public String upload(@FormDataParam(value = "file") InputStream fileStream,
	                    @FormDataParam(value = "file") FormDataContentDisposition fileDisposition) {
		 try {
		      Files.copy(fileStream, Paths.get("Zielordner speichern",fileDisposition.getFileName()), REPLACE_EXISTING);
		      return "END";
		    } catch (IOException e) {
		      throw new WebApplicationException(e, 500);
		    }

	}
}

Jetzt http: // localhost / XX / api / Upload / File Senden Sie die Datei an (XX ist der Paketname) und sie sollte gespeichert werden.

Referenz

Laden Sie Dateien mit JAX-RS hoch! http://blog.yumix.net/entry/2012/12/17/002515

Jersey-Einstellungen 1 (web.xml, Anwendungsklasse usw.) https://edgegram.hatenablog.jp/entry/2015/11/25/160433

Java - JAX-RS HTTP mehrteilige Anfrage https://tutorialmore.com/questions-1757453.htm

Recommended Posts

Empfangen von mehrteiligen / Formulardaten mit Jerjey (Jax-rs)
POST-Bild mit mehrteiligen / Formulardaten mit Moya