Maison > Java > javaDidacticiel > Comment télécharger simultanément un fichier et des données JSON dans un service Web Jersey RESTful ?

Comment télécharger simultanément un fichier et des données JSON dans un service Web Jersey RESTful ?

Susan Sarandon
Libérer: 2024-12-06 14:44:11
original
719 Les gens l'ont consulté

How to Upload a File and JSON Data Simultaneously in a Jersey RESTful Web Service?

Téléchargement de fichiers avec un autre objet dans le service Web RESTful de Jersey

Problème :

Vous vous souhaitez créer un enregistrement d'employé avec une image et des données d'employé dans un seul appel d'API REST à l'aide de Jersey, mais la mise en œuvre actuelle génère une erreur dans Chrome Facteur.

Réponse :

Pour activer le téléchargement simultané de fichiers et la transmission de données JSON, les données JSON doivent être incluses dans la requête en plusieurs parties. Voici une version modifiée de votre extrait de code :

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") Employee emp) {

//..... business login

}
Copier après la connexion

Le changement clé est l'ajout de @FormDataParam("emp") pour inclure les données des employés dans la requête multipart.

Remarques supplémentaires :

  • Si vous rencontrez l'erreur « Aucune source d'injection trouvée pour un paramètre de type public javax.ws.rs.core.Response" lors de l'utilisation du nouveau code, assurez-vous que les configurations Jersey appropriées pour gérer les requêtes en plusieurs parties sont en place dans le code de votre serveur.
  • Certains clients REST, comme les fonctionnalités FormData par défaut du navigateur. , peut ne pas prendre en charge la définition de Content-Types pour des parties individuelles en plusieurs parties. Pour résoudre ce problème, vous pouvez définir explicitement le Content-Type pour la partie JSON avant de désérialiser les données côté serveur :
@POST
@Path("upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(@FormDataParam("emp") FormDataBodyPart jsonPart,
                                  @FormDataParam("file") FormDataBodyPart bodyPart) { 
     jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
     Employee emp = jsonPart.getValueAs(Employee.class);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal