13

Wie ich das mit Springboot und Webservices mit Postman Chrome Add-ons probiere.Die Anfrage wurde abgelehnt, da im Springboot keine mehrteilige Grenze gefunden wurde

Im Postboten content-type="multipart/form-data" und ich bekomme die folgende Ausnahme.

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 

Kontroller angegeben ich den Code unten

@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."; 
    } 
} 

Hier gebe ich den Handler-Datei Code

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; 
} 
+0

ich auch mit dem gleichen Problem konfrontiert, und seine einzige Arbeit im Briefträger nicht funktioniert w ie anderen Tools wie "Advance Rest Client". Kann ich wissen warum? – Narendhran

Antwort

0

Problem mit Ihrer Anfrage nicht in Ihrem Code .problem ist. Bei einer mehrteiligen Anfrage erhalten Sie keine Grenze.

+1

Wie bekomme ich das? –

+0

sein Server Fehler 500 ist für Server gibt es keine Grenze gesetzt, wenn der Server das Bild –

41

Das Problem ist, dass Sie den Inhaltstyp selbst einstellen, lassen Sie es leer. Google Chrome wird es für Sie tun. Der mehrteilige Content-Type muss die Dateigrenze kennen, und wenn Sie den Content-Type entfernen, erledigt Postman das automatisch für Sie.

+2

Vielen Dank. Das hat bei mir in Postman funktioniert. Antwort von Tomeokin hilft auch, dass Postman nicht für alle Testszenarien geeignet ist. –

+0

Danke mein Problem auch zu lösen – erhun

+0

danke löste mein Problem auch ... –

1

Der "Postman - REST-Client" eignet sich nicht für Post-Aktionen mit der Einstellung content-type. Sie können versuchen, "Advanced REST client" oder andere zu verwenden.

Zusätzlich wurde Header ersetzt durch konsumiert und produziert seit Frühling 3.1 M2, siehe https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements. Und Sie können direkt produces = MediaType.MULTIPART_FORM_DATA_VALUE verwenden.

0

Ich hatte das gleiche Problem, während ich eine POST-Anfrage von Postman machte, und später konnte ich das Problem lösen, indem ich einen benutzerdefinierten Inhaltstyp mit einem damit eingestellten Grenzwert einstellte.

Ich dachte, dass Leute in ähnliches Problem laufen können und folglich teile ich meine Lösung.

postman

5

Ungeprüfter den Inhaltstyp in Postman und Postbote automatisch den Inhaltstyp ermitteln in der Laufzeit auf der Grundlage Ihrer Eingabe.

Sample

+0

arbeitete für mich, danke! – mangotang

1

Das ist für mich gearbeitet: über Postman Hochladen einer Datei auf einem SpringMVC Backend Webapp:

Backend: Endpoint controller definition

Postman: Headers setup POST Body setup