【问题标题】:Angularjs pass null value in file multipart FormData to Spring MVCAngularjs将文件多部分FormData中的空值传递给Spring MVC
【发布时间】:2019-12-27 15:21:12
【问题描述】:

我正在尝试将带有多部分数据(图像)的表单数据发送到 Spring MVC 控制器。从我的形式。图像字段是非强制性的。所以当我在没有输入图像字段的情况下调用 spring 控制器时,我在浏览器控制台中出现以下错误。

加载资源失败:服务器响应状态为 400 (错误请求)

HTML代码:

<input file="file" type="file" id ="file2"/>

AngularjS 代码:

$scope.saveData = function (formObj) {
    $http({
        url: CONTEXT_PATH+'saveFile',
        method: "POST",
        headers: { 'Content-Type': undefined },
        transformRequest: function (data) {
            alert(data.files);
            var formData = new FormData();
            formData.append("model", angular.toJson(data.model));
            formData.append("file", data.files);
            return formData;
        },
        data: { model: formObj, files: $scope.file }
    }).then(function (response) {
        //alert(response);
    });
};


app.directive('file', function () {
    return {
        scope: {
            file: '='
        },
        link: function (scope, el, attrs) {
            el.bind('change', function (event) {
                var file = event.target.files[0];
                scope.file = file ? file : undefined;
                scope.$apply();
            });
        }
    };
});

弹簧控制器代码:

@RequestMapping(value = "/saveFile")
public @ResponseBody String storeAd(@RequestParam ("model") String adString, @RequestParam ("file") MultipartFile file) throws IOException {
    System.out.println("adString > "+adString);
    return "OK";
}

【问题讨论】:

    标签: java angularjs file spring-mvc multipartform-data


    【解决方案1】:

    您的服务器代码需要一个名为“file”的请求参数,但您没有正确定义它。

    改变

    <input file="file" 
    

    <input type="file" name="file" 
    

    【讨论】:

    • formData.append("file", data.files); - 在 formData 中传递文件及其在上传图像时的工作。我的问题是当图像未上传时,它会抛出错误的请求
    猜你喜欢
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多