当前位置: 首页 > 知识库问答 >
问题:

用ajax上传Spring文件

唐彦
2023-03-14

从今天起,我尝试通过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>
 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中添加了commonsmultipartresolverbean。当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

我做错了什么?

共有1个答案

衡丰茂
2023-03-14

MultipartResolver必须设置MaxupLoadSize。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="50000000"/>
</bean>
 类似资料:
  • 如何通过Ajax发送文件? 2018-08-03 21:00:29.317错误9204---[nio-8080-exec-3]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()在路径[]上下文中的servlet[dispatcherServlet]引发异常[请求处理失败;嵌套异常为org.springframework.web.multi

  • 问题内容: 嗨,我正在尝试使用此代码发送带有xmlhttprequest的文件。 但我收到此错误:请求被拒绝,因为未找到多部分边界,请帮助我。 问题答案: 没有这样的事情; 文件对象不应该以这种方式附加。 不发送文件。您必须使用对象将文件包装到post数据对象中: formData.append(“thefile”, file); xhr.send(formData); 之后,可以访问文件(如果您

  • 问题内容: 我知道有很多类似的问题,但是我仍然没有找到解决问题的方法。我正在尝试使用XMLHttpRequest上传文件,因此我开发了以下代码: PHP端脚本是: 但是var $ _FILES [‘file’]似乎为空,这意味着该文件未发送到服务器。然后,我决定在下面的代码中使用FormData对象 它可以正常工作,但文件大小只有8mb左右。当我尝试发送大小超过8mb的文件时,该var 再次变空

  • 问题内容: 我已经进行了很多搜索,以了解如何使用Ajax从表单上载文件,并发现xhr2应该可以做到。但是,我已经尝试过使用FormData对象,但它不起作用。 这是一个简单的html表单 这是“ post.php”文件,当以“老式”方式运行时,它可以正常工作: 这是“ upload.js” 您知道为什么它不起作用吗?控制台返回“未发送文件”。 非常感谢 ! 问题答案: 尝试替换代码: 有了这个:

  • 问题内容: 我想通过ajax调用使用WebApi上传文件,该文件将保存到数据库中。我尝试了此链接中 给出的代码 。在这里,它将接收到的数据作为未指定扩展名的文件保存到硬盘驱动器中,但是我想要执行类似将文件保存到数据库时的操作,我也想保存文件名和扩展名原因,如果以后需要要下载文件,我可以提供文件名和扩展名。并在链接中将文件作为文件保存到硬盘,但是有什么方法可以直接将文件保存到DB。 问题答案: 答案

  • 问题内容: 我正在创建用于发送邮件的邮件页面。我需要在发送前附加一些文件。我如何使用AJAX做到这一点?最初,我需要将这些文件存储在服务器中,然后必须发送邮件。通过单个发送按钮即可完成这些操作。 问题答案: 检查以下问题: JavaScript文件上传 如何为我的Web应用程序上传类似Gmail的文件? 什么是最好的多文件JavaScript / Flash文件上传器?