2015-03-31 7 views
9

Ich versuche, Methode für das Hochladen von Datei mit einigen anderen Formularfeldern zu erstellen.Spring MVC, Datei mit anderen Feldern hochladen

Dies ist Standard-HTML-Formular mit Datei und einige andere Felder:

<form action="products" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="text" name="name"> 
    <input type="text" name="email"> 
    <input type="submit" value="Upload" name="submit"> 
</form> 

Bitte beachten Sie: I Standard-HTML-Formular verwenden wollen, nicht Frühling Form Tags wie <form:form ...> etc

Und das ist mein Controller methode:

@ResponseBody 
public MyDto createProduct(@RequestBody MyDto dto, @RequestParam MultipartFile file) { 

} 

Aber ich bekomme Fehler: Required request body content is missing.

Wie soll ich meine Web-Methode zum Empfangen von Datei sowie DTO-Objekt als Argumente erstellen? Auch wird es nett sein, wenn ich MultipartFile-Objekt in MyDto enthalten kann.

Antwort

10

Ihre Probleme auftreten führen, dass Ihr Körper verbraucht wird, wenn die Werte des ersten Arguments zu binden, durch ommiting die Anmerkung für den dto des Rahmen wird die passenden Objekte instanziiert und bevölkert von der Anfrage auch

@ResponseBody 
    public MyDto createProduct(MyDto dto, @RequestParam MultipartFile file) { 

    } 

Notenwerte dass Sie eine Datei Eigenschaft des Typs MultipartFile auf Ihre MyDto Instanz hinzufügen kann, wird es instanziiert und korrekt als gut, so einfach

binden
+0

In diesem Fall bekomme ich 'Required MyDto Parameter 'Dto' ist nicht vorhanden ' – MyTitle

+1

Ich habe jetzt richtig beantwortet, ursprünglich war mein Hauptpunkt nicht zu verwenden * @ RequestBody *, aber eigentlich sollte nicht mit ersetzt werden * @ RequestParam * entweder, die Annotation altogheter weglassen wird Sie bekommen, wo Sie wollten –

+1

Ich teste mit Postman Rest Client und JSON-Daten nicht Mapping mit JSON Anfrage dh alle Felder in MyDto Mapping auf Null – Anand