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;
}
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.
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.
Cela a fonctionné pour moi: Le téléchargement d'un fichier via le Facteur, pour un spring mvc backend webapp:
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
.
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.
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.