J'essaye d'envoyer un fichier au contrôleur en l'utilisant dans FormBodyPart, plutôt que de lui envoyer directement le fichier. Voici le code pour faire une collection de fichiersSpring org.springframework.web.multipart.support.MissingServletRequestPartException, Required partie de la requête 'file' n'est pas présent
private void addFile(Collection<FormBodyPart> parts, File inputFile, String fileType)
throws ClassificationException {
if (inputFile == null) {
throw new ClassificationException("Null input file provided");
}
if (!inputFile.exists()) {
throw new ClassificationException("Input file not found: " + inputFile.getAbsolutePath());
}
if (fileType != null) {
String charset = "UTF-8";
parts.add(new FormBodyPart("file", new FileBody(inputFile, fileType, charset)));
} else {
parts.add(new FormBodyPart("file", new FileBody(inputFile, inputFile.getName())));
}
}
La collection de pièces est un arraylist, qui contiendrait les fichiers.
Voici mon code pour le réglage Http Entité
HttpPost httppost = new HttpPost("http://localhost:9000/upload1");
MultipartEntity reqEntity1 = new MultipartEntity();
FormBodyPart part1;
for (Iterator i$ = parts.iterator(); i$.hasNext(); reqEntity1.addPart(part1)) {
part1 = (FormBodyPart) i$.next();
System.out.println(part1.getHeader());
}
httppost.setEntity(reqEntity1);
HttpResponse response = httpclient.execute(httppost);
System.out.println(response);
Ma déclaration de méthode de commande est
String index(@RequestParam("file") MultipartFile uploadfile)
Je reçois une erreur du serveur indiquant
[ 400] {"timestamp": 1474898550131, "status": 400, "error": "Demande incorrecte", "exception": "o rg.springframework.web.multipart.support.MissingServletRequestPartException », "message": "une partie de la demande requise 'fichier' est pas présent", "chemin": "/ Upload1"}
Mon dispatcher.xml contient déjà haricot de multipartResolver. Je suis assez nouveau pour les services Web et peut-être faire une sorte d'erreur idiote. S'il vous plaît aidez-moi, merci d'avance
Vous ne devriez pas utiliser '$' dans les noms de variables. [Java Language Specification §3.8] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.8): * Le signe '$' ne doit être utilisé que dans code source généré mécaniquement ou, rarement, accéder à des noms préexistants sur les systèmes hérités. * – Andreas
Etes-vous sûr que 'parts' n'est pas vide? – Andreas
Lorsque j'imprime des pièces, il montre "[[email protected]]", donc je ne pense pas qu'il soit vide. –