spring多部分请求文件上传 - 多部分大小为0

时间:2015-10-13 07:51:49

标签: java spring file-upload

我一直在尝试使用spring multipart请求上传文件。 我的控制器就像:

 @RequestMapping(value = "/uploadDocuments")
    @ResponseBody
    public  String upload(MultipartHttpServletRequest       request,HttpServletResponse response) {                 

        System.out.println("reached here.. ");
        List<MultipartFile> files = request.getFiles("files");
        System.out.println(files.size()+"size of the multipart file");

我正在使用ajax调用来加载我的文件。和文件正在添加如下:

 var files = [];
 files.push($('#files')[0].files[0]);

我不知道自己错过了什么。苦苦于获取服务中的文件数组。请帮忙。

我的客户端代码:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="jquery-1.11.0.min.js"></script>
        <script>
            $(document).ready(function() {

                $('#submit').click(function() {
                    var formData = new FormData();

                    var files = [];
                    files.push($('#files')[0].files[0]);
                    files.push($('#files')[0].files[1]);
                    formData.append('files', files);
                    $.ajax({
                        url: 'http://localhost:8085/MyWar/services/uploadDocuments',
                        type: 'POST',
                        dataType: 'text',
                        data: formData,
                        timeout: 45000,
                        contentType: false,
                        processData: false,
                        maxFileSize: 2097152,
                        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
                        error: function (jqXHR, status, err) {
                            alert('ERROR');
                        },
                        success: function (data) {
                            alert('SUCCESS');
                        }
                    });
                });
            });
        </script>

    </head>
    <body>

        <input type="file" id="files" multiple=""/>
        <button id="submit">Submit</button>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

终于找到了办法。我试图发送多个文件

var files = [];
            files.push($('#files')[0].files[0]);
            files.push($('#files')[0].files[1]);
            formData.append('files', files);

此方法的问题在于,在控制器端未收到添加了名称“files”的结果文件数组。 一些与此相关的有趣问题和网站: 1. http://dhruba.name/2008/12/27/implementing-single-and-multiple-file-multipart-uploads-using-spring-25/ 2. http://viralpatel.net/blogs/ajax-style-file-uploading-using-hidden-iframe/

现在,我改变了从客户端发送的参数,如:

 formData.append('files_1', files[0]);
 formData.append('files_2', files[1]);

,而不是文件数组,发送多个文件和附加表单数据帮助我。

相关问题