Spring MVC File Upload null多部分数据

时间:2016-06-26 11:53:54

标签: spring-mvc file-upload

我想使用Spring MVC将图像文件上传到计算机中的一个位置。但是当我选择文件时,我收到NullPointerException错误。这是我的代码;

@RequestMapping("/save-product")
public void saveFile(HttpServletRequest servletRequest,
        @ModelAttribute("uploadedFile") UploadedFile uploadedFile,
        BindingResult bindingResult, Model model) {

    MultipartFile multipartFile = uploadedFile.getMultipartFile();
    String fileName = multipartFile.getOriginalFilename();
    try {
        File file = new File(servletRequest.getServletContext().getRealPath("/home/mesud/springupload/"), fileName);
        multipartFile.transferTo(file);
    } catch (IOException e) {
        e.printStackTrace();
    }
}


<sf:form enctype="multipart/form-data" modelAttribute="uploadedFile">
                <fieldset >
                 <legend>Resim Yükle</legend>
                 <div id='progressBar'
                    style='height: 20px; border: 2px solid green; margin-bottom: 20px'>
                    <div id='bar' style='height: 100%; background: #33dd33; width: 0%'>
                    </div>
                </div>
                <input type="file" id=profilResim value="Profil Resmi" style="margin-bottom: 20px"/><br/>
              </fieldset>
</sf:form>

我在Javascript中的onSelect函数中上传文件。这是我的javascript方法;

function uploadNext() {
        var xhr = new XMLHttpRequest();
        var fd = new FormData();
        var file = document.getElementById('profilResim').files[filesUploaded];
        fd.append("multipartFile", file);
        xhr.upload.addEventListener("progress", onUploadProgress, false);
        xhr.addEventListener("load", onUploadComplete, false);
        xhr.addEventListener("error", onUploadFailed, false);
        xhr.open("POST", "save-product");
        debug('uploading ' + file.name);
        xhr.send(fd);
    }

在我的Applicaiton Initializer类中,我将此方法用于多部分请求;

@Override
protected void customizeRegistration(Dynamic registration) {
    registration.addMapping("/");
    registration.setMultipartConfig(new   MultipartConfigElement("/home/mesud/springtemp",2097152, 4194304, 0));
}

为什么我的UploadedFile对象(此对象包含一个MultipartFile对象)被发布为null?

1 个答案:

答案 0 :(得分:1)

可能有几个原因。做一些检查,比如你在application-context.xml文件中定义了CommonsMultiPartResolver bean。如果不定义它。还检查你的罐子。确保你有commons-fileupload jar和commons-io jar。如果有帮助,请告诉我。