当前位置 : 主页 > 网页制作 > JQuery >

jquery – 由ajax上传的Spring文件

来源:互联网 收集:自由互联 发布时间:2021-06-15
从yeasterday开始,我正试图通过ajax将文件上传到我的 Spring应用程序.这是我的控制器: @RequestMapping(value="/upload", method=RequestMethod.POST)@ResponseBodypublic String uploadFile( @RequestParam("file") Multipart
从yeasterday开始,我正试图通过ajax将文件上传到我的 Spring应用程序.这是我的控制器:

@RequestMapping(value="/upload", method=RequestMethod.POST)
@ResponseBody
public String uploadFile( 
        @RequestParam("file") MultipartFile file, Principal principal )
{   
    if( principal != null ) {

    } 

    return "";
}

在HTML代码中形成:

<form id="uploadImageForm" 
          name="uploadImageForm" 
          enctype="multipart/form-data">
        <div class='dialog' style='width:200px;'>
            <div class='green_button' id='files' name='files'>
                <div class='green_button_text' id="add_image">
                    wybierz zdjęcie
                </div>
                <input type="file" name="file" id="fileInputHidden" style="display:none"/>
            </div>
<script>
    $("#add_image").click(function(){
        $("input[id='fileInputHidden']").click();
    });
</script>
        </div>
    </form>

通过ajax发送文件的脚本:

document.getElementById('fileInputHidden').addEventListener('change', this.onFileChange, false);
},

this.onFileChange   = function( evt ) {
    var file = evt.target.files[0];
    if( !file != null ) {
        if (!!file.type.match(/image.*/)) {
            $( document.forms['uploadImageForm'] ).ajaxUpload( {
                url: CONTEXT_URL + "/upload",
                method: "POST",
                success: function(response) {
                    $("#accept").css("opacity","1");
                    $("#accept").click(function(){
                        $("#ac").css("display","none");
                    });
                }
            });

        } else {
            alert("Wybrany plik nie jest zdjęciem!");
        }
    }

在dispacher-servlet.xml中添加了CommonsMultipartResolver bean.
当jquery发送ajax post请求时,得到内部错误(500),我的堆栈看起来像:

SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/jadenazlot] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?] with root cause
java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:161)
    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:86)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79)

我试图将@RequestParam注释更改为

String uploadFileHandler(@ModelAttribute("uploadImageForm") UploadedFile file ) {/*...*/}

上传的文件是我自己的getter和setter类,但是我在file.getFile()中得到NullPointerExcepotions

我做错了什么?

MultipartResolver必须设置maxUploadSize.

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="50000000"/>
</bean>
网友评论