[JAVA] Recevoir des données multipart / form-data avec Jerjey (Jax-rs)

introduction

Dans [Android] Téléchargement d'images du terminal au serveur, le côté récepteur était Servlet. Je voulais vraiment le recevoir à Jerjey, mais je ne savais pas quoi faire et j'ai fait un compromis. Cette fois, j'ai en quelque sorte compris comment le faire, alors je vais le présenter.

environnement

Correspond à multipart / form-data

Veuillez télécharger ce qui suit.

Passez le chemin à travers ces deux.

Créer une classe d'application

Tel quel, multipart / form-data ne peut pas encore être utilisé, donc dans le package du projet que vous souhaitez prendre en charge Créez [ApplicationConfig.java] et copiez et collez ce qui suit.

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);
   }
}

Veuillez saisir le nom du package à utiliser dans "package". Puis modifiez [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>
    <!--Ici"pakage.ApplicationConfig"Est le chemin de la classe créé ci-dessus.-->
    <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>

Ceci complète la prise en charge des données multipart / formulaire.

la mise en oeuvre

Créez la classe suivante.

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("Enregistrer le dossier de destination",fileDisposition.getFileName()), REPLACE_EXISTING);
		      return "END";
		    } catch (IOException e) {
		      throw new WebApplicationException(e, 500);
		    }

	}
}

Maintenant http: // localhost / XX / api / Upload / File Envoyez le fichier à (XX est le nom du package) et il doit être enregistré.

référence

Téléchargez des fichiers avec JAX-RS! http://blog.yumix.net/entry/2012/12/17/002515

Paramètres de Jersey 1 (web.xml, classe Application, etc.) https://edgegram.hatenablog.jp/entry/2015/11/25/160433

java - Requête HTTP multipart JAX-RS https://tutorialmore.com/questions-1757453.htm

Recommended Posts

Recevoir des données multipart / form-data avec Jerjey (Jax-rs)
Image POST avec multipart / form-data en utilisant Moya