Spring 3.0 MultipartFile-Upload

Ich konvertiere eine Java-Webanwendung in das Spring Framework und schätze einige Ratschläge zu den Problemen, denen ich beim Hochladen von Dateien gegenüberstehe. Der ursprüngliche Code wurde mit org.apache.commons.fileupload geschrieben.

Schließt Spring MultipartFile org.apache.commons.fileupload ein oder kann ich diese Abhängigkeit von meiner POM-Datei ausschließen?

Ich habe folgendes Beispiel gesehen:

<code>@RequestMapping(value = "/form", method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("file") MultipartFile file) {

    if (!file.isEmpty()) {
        byte[] bytes = file.getBytes();
        // store the bytes somewhere
       return "redirect:uploadSuccess";
    } else {
        return "redirect:uploadFailure";
    }
}
</code>

Ursprünglich habe ich versucht, diesem Beispiel zu folgen, aber es wurde immer ein Fehler angezeigt, da dieser Anforderungsparameter nicht gefunden werden konnte. Also habe ich in meinem Controller Folgendes getan:

<code>@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody
ExtResponse upload(HttpServletRequest request, HttpServletResponse response)
{
   // Create a JSON response object.
   ExtResponse extResponse = new ExtResponse();
   try {
       if (request instanceof MultipartHttpServletRequest)
       {
           MultipartHttpServletRequest multipartRequest =
                        (MultipartHttpServletRequest) request;
           MultipartFile file = multipartRequest.getFiles("file");
           InputStream input = file.getInputStream();
           // do the input processing
           extResponse.setSuccess(true);
        }
    } catch (Exception e) {
        extResponse.setSuccess(false);
        extResponse.setMessage(e.getMessage());
    }
    return extResponse;
}
</code>

und es funktioniert. Wenn mir jemand sagen kann, warum @RequestParam bei mir nicht funktioniert hat, werde ich es begrüßen. Übrigens habe ich

<code>    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="2097152"/>
    </bean>
</code>

in meiner Servlet-Kontextdatei.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage