13

Come sto provando con spring boot e webservices con i componenti aggiuntivi di chrome postman.La richiesta è stata rifiutata perché non è stato trovato alcun limite multipart in springboot

Nel postino content-type="multipart/form-data" e ricevo l'eccezione seguente.

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 

controller ho specificato il codice qui sotto

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

Qui ho specificare il codice del gestore di file

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

anche io di fronte allo stesso problema, e il suo unico lavoro in postino non funziona w con altri strumenti come "Advance rest client". posso sapere perché? – Narendhran

risposta

0

problema non è nel vostro .problem codice con la tua richiesta. non si ottiene alcun limite di tipo nella richiesta in più parti.

+1

Come ottenerlo? –

+0

il suo errore del server 500 è per il server non c'è un set vuoto quando il server riceve l'immagine –

41

Il problema è che si imposta il tipo di contenuto da soli, lasciare che sia vuoto. Google Chrome lo farà per te. Il Content-Type multipartito deve conoscere il limite del file e quando si rimuove Content-Type, Postman lo farà automaticamente per te.

+2

Grazie. Questo ha funzionato per me in Postman. Inoltre, la risposta di Tomeokin aiuta nel senso che Postman non è adatto a tutti gli scenari di test. –

+0

Grazie risolvere anche il mio problema – erhun

+0

grazie risolto anche il mio problema ... –

1

Il "Postman - Client REST" non è adatto per eseguire azioni post con l'impostazione content-type. Si può provare a utilizzare "Advanced REST client" o altri.

Inoltre, le intestazioni sono state sostituite da consuma e produce dalla primavera 3.1 M2, vedere https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements. Ed è possibile utilizzare direttamente produces = MediaType.MULTIPART_FORM_DATA_VALUE.

0

Avevo lo stesso problema durante l'esecuzione di una richiesta POST da Postman e in seguito avrei potuto risolvere il problema impostando un Content-Type personalizzato con un valore limite insieme a esso in questo modo.

Ho pensato che le persone possono incontrare problemi simili e quindi, sto condividendo la mia soluzione.

postman

5

non controllato il tipo di contenuto in Postman e postino rilevare automaticamente il tipo di contenuto sulla base di input in fase di esecuzione.

Sample

+0

ha funzionato per me, grazie! – mangotang

1

questo ha funzionato per me: caricamento di un file tramite postino, ad uno SpringMVC backend webapp:

backend: Endpoint controller definition

Postino: Headers setup POST Body setup

Problemi correlati