La demande a été rejetée parce qu'aucune limite multipartite n'a été trouvée à springboot.

comme je suis en train d'essayer cela avec la botte de printemps et webservices avec Postman chrome add-ons.

facteur content-type="multipart/form-data" et j'obtiens le ci-dessous exception.

HTTP Status 500 - Request processing failed; 
nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; 
nested exception is java.io.IOException: 
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

dans Controller j'ai spécifié le code ci-dessous

@ResponseBody
@RequestMapping(value = "/file", headers = "Content-Type= multipart/form-data", method = RequestMethod.POST)

public String upload(@RequestParam("name") String name,
        @RequestParam(value = "file", required = true) MultipartFile file)
//@RequestParam ()CommonsMultipartFile[] fileUpload
{
    // @RequestMapping(value="/newDocument", , method = RequestMethod.POST)
    if (!file.isEmpty()) {
        try {
            byte[] fileContent = file.getBytes();
            fileSystemHandler.create(123, fileContent, name);
            return "You successfully uploaded " + name + "!";
        } catch (Exception e) {
            return "You failed to upload " + name + " => " + e.getMessage();
        }
    } else {
        return "You failed to upload " + name + " because the file was empty.";
    }
}

ici je spécifie le code du gestionnaire de fichiers

public String create(int jonId, byte[] fileContent, String name) {
    String status = "Created file...";
    try {
        String path = env.getProperty("file.uploadPath") + name;
        File newFile = new File(path);
        newFile.createNewFile();
        BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(newFile));
        stream.write(fileContent);
        stream.close();
    } catch (IOException ex) {
        status = "Failed to create file...";
        Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex);
    }
    return status;
}
25
demandé sur Reaz Murshed 2016-03-15 10:56:56

6 réponses

Le problème est que vous définissez le Type de Contenu par vous-même, laissez-le vide. Google Chrome le fera pour vous. Le type de contenu multipart a besoin de connaître la limite du fichier, et lorsque vous retirez le type de contenu, Postman le fera automatiquement pour vous.

57
répondu de.la.ru 2016-06-24 12:34:05

sans vérifier le type de contenu dans Postman et postman détectent automatiquement le type de contenu basé sur votre entrée dans le temps d'exécution.

échantillon

10
répondu Bala 2017-08-29 06:44:17

Cela a fonctionné pour moi: Le téléchargement d'un fichier via le Facteur, pour un spring mvc backend webapp:

Backend: Endpoint controller definition

Facteur: Headers setup POST Body setup

5
répondu gorjanz 2017-12-14 08:18:32

Le "Postman-REST Client" n'est pas adapté pour faire une action de post avec la définition de content-type.Vous pouvez essayer d'utiliser "Advanced REST client" ou d'autres.

de plus, les en-têtes ont été remplacés par des consommables et des produits depuis le printemps 3.1 M2, voir https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements. Et vous pouvez directement utiliser produces = MediaType.MULTIPART_FORM_DATA_VALUE.

1
répondu tomeokin 2016-06-24 15:31:34

problème n'est pas dans votre code .problème avec votre demande. vous ne recevez aucune sorte de limite dans la demande multi-pièces.

0
répondu Chayon Ahmed 2016-05-19 03:48:37

j'avais le même problème en faisant une requête POST de Postman et plus tard j'ai pu résoudre le problème en définissant un type de contenu personnalisé avec une valeur limite fixée avec elle comme ceci.

je pensais que les gens pouvaient rencontrer des problèmes similaires et donc, je partage ma solution.

postman

0
répondu Reaz Murshed 2017-07-13 12:02:27