Spring发送formdata文件和输入ajax post的值

时间:2017-11-25 06:33:25

标签: javascript jquery ajax spring

我需要通过邮件发送动态增长的文件数组。除此之外,我需要将两个输入的值一起发送。代码工作,但如果我通过data.append(“input1”,input1)添加更多;在发出ajax请求时我没有收到。 有什么办法吗?因为我没有看到如何做到这一点。我使用的是春天1.5.7和百里香。

@PostMapping("/upload/multi")
    @ResponseBody
    public ResponseEntity<?> multiUploadFileModel(@RequestBody MultipartFile[] file) {


        return new ResponseEntity<Object>("Successfully uploaded!", HttpStatus.OK);

    }

//我的JS可以在不附加其他数据的情况下工作。

function ajaxSubmit() {
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");

    var data = new FormData();

    var input1 = $('#input1').val();
    var input2 = $('#input2').val();

    $.each(files,function(i,file){
        data.append('file', file);
    })
    $.ajax({
        data: data,
        beforeSend: function(xhr) {
            xhr.setRequestHeader(header, token);
            },  
        cache: false,
        contentType: false,
        processData: false,
        type: 'POST',
        enctype: 'multipart/form-data', 
        url: "/upload/multi",
        success: function (data) {
            console.log(data);
        },
        error:function (xhr, ajaxOptions, thrownError){
            if(xhr.status==404) {
                console.log(thrownError);
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

你应该使用@RequestParam代替@RequestBody ..

@PostMapping("/upload/multi")
    @ResponseBody
    public ResponseEntity<?> multiUploadFileModel(@RequestParam("file")  MultipartFile[] file, @RequestParam("input1") String input1, @RequestParam("input2") String input2) {


        return new ResponseEntity<Object>("Successfully uploaded!", HttpStatus.OK);

    }

如果input1和input2不是字符串,则将其更改为更正类型。