Hochladen mehrerer MVC-Dateien mit der HTML5-Funktion für mehrere Dateiformate

Ich versuche, mehrere Dateien mithilfe von Spring 3.1.2 mit @Controller und @RequestMapping hochzuladen.

Hier ist, was ich getan habe und meine Konfiguration.

HTML5-Formular:

<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>

Wenn Sie das Formular absenden, gelangen Sie zur Methode addFileSystemImage. Die Daten für das Argument locId sind hier, aber das Argument "files" ist nicht gebunden. Es ist systematisch null, egal welche Kombination von Argumenten / Feldnamen / Argumenttypen ich ausprobiert habe.

Das Argument HttpServletRequest ist ein org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest und enthält ein multiPartFile-Attribut, das tatsächlich die Dateidaten enthält. Ein Blick auf seinen Wert beim Debuggen gibt mir

{files[]=[org.springframework.web.multipart.commons.CommonsMultipartFile@16afd7f9, org.springframework.web.multipart.commons.CommonsMultipartFile@728c2811, org.springframework.web.multipart.commons.CommonsMultipartFile@4f9aaed7]}

was bedeutet, dass meine Dateien [] tatsächlich hier sind ... aber irgendwie hat sie den Datenbindungsschritt nicht richtig bestanden ...

Nun ... ich weiß, dass Sie mir sagen werden, dass ich die Daten von der Anfrage abrufen kann ... aber ich möchte lieber, dass dies richtig funktioniert ... auf die Sring-Weise ... :) und dass meine ArrayList von MultipartFile richtig ist besiedelt.

Vermisse ich etwas? Hat jemand diese Arbeit wirklich richtig gemacht? Was kann ich tun, um diese ArrayList (oder sogar ein reguläres Array) zu füllen?

Ich bin auf diese Lösung gestoßenSpring MVC mit Ajax-Datei-Upload und MultipartFile Das macht so ziemlich das Gleiche wie ich, aber offensichtlich muss ich etwas falsch machen, da diese Lösung bei mir nicht funktioniert.

Hinweis: Ich habe es geschafft, es mit Uploads einzelner Dateien zum Laufen zu bringen. Aber meine Herausforderung heute ist es, mehrere Dateien gleichzeitig zu bekommen.

Jede Hilfe dankbar.

Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage