angularjs + spring4 rest - 使用json数据上传文件

时间:2016-07-14 17:13:50

标签: angularjs spring-restcontroller spring-rest

我有一个页面,员工可以填写他们的详细信息并上传图片。我正在向我的春假发送邮件请求,文件和表格数据如下:

var formData=new FormData();
    formData.append("data", angular.toJson($scope.employee));
    formData.append("file",$scope.file);
    $http.post('rest/employee/upload', formData, {
        transformRequest: angular.identity,
        headers: {'Content-Type': undefined}
    })
    .success(function(){
    })
    .error(function(){
    });

下面是我的弹簧控制器:

@RequestMapping(value="/upload", method = RequestMethod.POST)
    public @ResponseBody EmployeeBean upload(EmployeeBean employeeBeanJson, MultipartFile file) {

}

当我发送带有图像和formdata的发布请求时,图像正确到达控制器,但是formdata即。 employeeBean包含具有空值的fileds。

当我将控制器更改为:

@RequestMapping(value="/upload", method = RequestMethod.POST)
    public @ResponseBody EmployeeBean upload(MultipartFile file, @RequestParam("data") String employeeBeanJson) {

}

这里formdata以字符串json的形式出现,包含所有必需的值。

我已将multiPartResolver添加到spring-context:

<beans:bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <beans:property name="maxUploadSize" value="2097152" />
    </beans:bean>

虽然我可以将此字符串json转换为Object但问题是我无法使用@Valid并且我需要再次进行验证。

有没有办法让第一个弹簧控制器工作? 如果我使用Object Mapper手动转换jsonToObject,有没有办法调用@Valid?

0 个答案:

没有答案