411 votes

Comment télécharger un fichier et des données JSON dans Postman ?

J'utilise Spring MVC et voici ma méthode :

/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
            @RequestParam("name") String name,
            @RequestParam("file") MultipartFile file,
            HttpServletRequest request,
            HttpServletResponse response) {

    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();

            // Creating the directory to store file
            String rootPath = System.getProperty("catalina.home");
            File dir = new File(rootPath + File.separator + "tmpFiles");
            if (!dir.exists()) {
                dir.mkdirs();
            }

            // Create the file on server
            File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
            stream.write(bytes);
            stream.close();

            System.out.println("Server File Location=" + serverFile.getAbsolutePath());

            return null;
        } catch (Exception e) {
            return null;
        }
    }
}

J'ai besoin de passer l'id de session dans postman et aussi le fichier. Comment puis-je le faire ?

0 votes

APRÈS TOUT CE QUI A ÉTÉ DIT ET FAIT, cela a réglé mon problème d'ajout. [] au nom du paramètre de téléchargement de fichiers, par exemple. image[] file[] upload[]

779voto

Sumit Badaya Points 896

Dans postman, définissez le type de méthode à POST .

Ensuite, sélectionnez Body -> form-data -> Entrez votre nom de paramètre ( fichier selon votre code)

et sur le côté droit, à côté de la colonne des valeurs, il y aura liste déroulante "texte, fichier". , sélectionnez Fichier . choisissez votre fichier image et postez-le.

Pour le reste de la Paramètres basés sur le "texte". vous pouvez le poster comme vous le faites normalement avec postman. Il suffit d'entrer le nom du paramètre, de sélectionner "text" dans le menu déroulant de droite et d'entrer une valeur quelconque, puis d'appuyer sur le bouton d'envoi. La méthode de votre contrôleur devrait être appelée.

21 votes

Pourquoi POST ? Qu'en est-il PUT ?

4 votes

Que voulez-vous dire par "ne fonctionne pas" ? Pourquoi ne pas montrer votre code pour que nous puissions déboguer le problème facilement ?

2 votes

J'obtiens la partie texte comme String toujours. Pourquoi ne correspond-il pas à mon DTO ? @PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) Je n'arrive pas du tout à envoyer la requête de Postman dans ce cas.

355voto

Chris F Carroll Points 724

Le guide visuel manquant

Vous devez premièrement trouver le menu déroulant presque invisible gris pâle sur blanc pour File qui est la clé magique qui déverrouille la Choose Files bouton.

Après vous choisissez POST , puis choisissez Body->form-data , puis trouver la liste déroulante Fichier, et puis choisissez "Fichier", alors seulement le bouton "Choisir les fichiers" apparaîtra comme par magie :

Postman POST file setup - (Text,File) dropdown highlighted

24 votes

Vous avez raison de dire que l'interface utilisateur est invisible pour les non-initiés. Merci pour la version visuelle !

1 votes

Que faire si j'ai un corps de données XML et une pièce jointe ?

0 votes

La réponse de gce semble dire que vous pouvez le faire assez facilement ? Je n'en suis pas sûr. Vous devrez peut-être apprendre à combiner la pièce jointe et le XML en un seul document en vous familiarisant avec le format mime multipart. Ce qui n'est pas trop compliqué, vous pouvez créer un corps mime multipart à la main.

86voto

gce Points 51

Tu pourrais peut-être faire comme ça :

postman_file_upload_with_json

15 votes

Quels sont les 6 collecteurs que vous avez installés ?

2 votes

Cette solution fonctionne pour moi. Je n'ai passé aucun en-tête et ça marche bien. Merci. Le passage de JSON était la partie la plus délicate pour moi :)

0 votes

Ha, bien vu - j'ai changé mon point de terminaison pour faire ça :) Un peu moche mais super pratique

37voto

burakozgul Points 391

Comme ceci :

enter image description here

Corps -> données du formulaire -> sélectionner un fichier

Vous devez écrire "fichier" au lieu de "nom".

Vous pouvez également envoyer des données JSON à partir de Body -> champ brut. (Il suffit de coller la chaîne JSON)

7 votes

J'ai besoin de passer des valeurs et des fichiers dans Postman pour un service, est-ce possible ?

1 votes

En-têtes ? quels en-têtes mettre ?

35 votes

La question demande de télécharger des données json également, ce qui n'est pas couvert ici dans cette réponse.

18voto

Rohit Thakur Points 113
  1. Ne donnez pas d'en-tête.
  2. Placez vos données json dans un fichier .json.
  3. Sélectionnez vos deux fichiers : l'un est votre fichier .txt et l'autre est le fichier .json. pour vos clés de paramètres de demande.

0 votes

C'est une bonne réponse Cela peut également être utilisé dans les cas où plusieurs fichiers doivent être téléchargés avec une charge utile json dans une charge utile en plusieurs parties

1 votes

C'est la réponse la plus correcte si vous voulez envoyer un fichier ainsi que des données JSON. Les exemples montrant la sélection d'un fichier puis la transmission des données JSON comme une seule valeur de chaîne JSON ou la division des valeurs ne fonctionnent pas (cela dépend peut-être du point final mais je ne peux pas le vérifier). Le problème est également mentionné ici : github.com/postmanlabs/postman-app-support/issues/3331

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X