Ich versuche, mehrere Dateien mit Feder 3.1.2 mit @Controller und @RequestMapping hochladen.Spring MVC mehrere Datei-Upload mit HTML5 mehrere Dateiform-Funktion
Hier ist, was ich getan habe und meine Konfiguration.
Html5 Form:
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
Controller-Methode:
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
meine conf:
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
Absenden des Formulars an die addFileSystemImage Methode gelangt. Die Daten für das Argument locId sind hier, aber das Argument "files" ist nicht gebunden. Es ist systematisch null, egal welche Kombination von Argument/Feldnamen/Argumenttypen ich ausprobiert habe.
Das Argument HttpServletRequest ist ein org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest. Es enthält ein multiPartFile-Attribut, das die Dateidaten enthält. Nun zu ihrem Wert im Debug-Blick gibt mir
{files[]=[[email protected]6afd7f9, [email protected]28c2811, [email protected]f9aaed7]}
was bedeutet, dass meine Dateien [] in der Tat hier sind ... aber irgendwie hat es nicht die Daten Bindungsschritt richtig passieren ...
... I Ich weiß, du wirst mir sagen, dass ich die Daten von der Anfrage abrufen kann ... aber ich möchte lieber, dass das richtig funktioniert ... der Sring-Weg ... :) und meine ArrayList von MultipartFile richtig aufgefüllt haben.
Fehle ich etwas? Hat jemand das wirklich richtig gemacht? Was kann ich tun, um diese ArrayList (oder sogar ein reguläres Array) zu füllen?
Ich kam accross dieser Lösung Spring MVC with ajax file upload and MultipartFile die so ziemlich das Gleiche tut, wie ich bin, aber offensichtlich muss ich etwas falsch zu machen, da diese Lösung für mich nicht funktioniert.
Hinweis: Ich habe es geschafft, es mit Single-Datei-Uploads arbeiten zu lassen. Aber heute besteht meine Herausforderung darin, mehrere Dateien gleichzeitig zu erhalten.
Jede Hilfe wird geschätzt.
Vielen Dank im Voraus.
Haben Sie versucht, das Argument "files" als List- oder Multipart [] -Dateien zu deklarieren? Ich glaube nicht, dass die Spring-Backing-Liste eine ArrayList ist, und vielleicht schlägt der Cast fehl, wenn Spring versucht, die Methodenargumente zu binden. –
Ich habe es geschafft, dass so etwas in der Vergangenheit funktionierte. Ich erinnere mich, dass Sie Commons-Fileupload-Abhängigkeit in Ihrem Pom auch einschließen müssen. Vielleicht versuchen Sie das? – gerrytan
Dumm ich ... Es hat mit List und Array funktioniert ... Ich muss den Überblick verloren haben, was ich während der ganzen Tests gemacht habe ... Danke Alex. Sie können die Frage beantworten und ich gebe Ihnen einen Punkt, wenn Sie wollen. Prost ! – azpublic