Spring Controller不接受角度控制器发送的文件

时间:2015-10-10 15:10:47

标签: angularjs spring spring-mvc

我将一些表单数据发布到Spring控制器,如果成功,我再次将两个文件从Angular控制器发布到Spring控制器:

$http.post('userdetails', formData).success(function(response) {
  if ($scope.items.length > 0) {
    for (var i = 0; i < $scope.items.length; i++) {
      $scope.uploadItem(response.id, $scope.items[i]);
    }
  }
});

这是我的uploadItem函数:

$scope.uploadItem = function(id, file) {
  var data = new FormData();
  data.append('id', id);
  data.append('file', file);

  $http.post('multipleSave', data, {
    transformRequest: function(data, headersGetterFunction) {
      return data;
    },
    headers: {
      'Content-Type': undefined
    }
  }).success(function(data) {
    $log.debug("Upload Successfull");
    $log.debug("File upload: Success calling ");
    alert(data);
    alert("hi");
  }).error(function(error) {
    $log.debug("Upload failure");
    alert(error);

  });
};

这是我的Spring Controller代码

@RequestMapping(value="/multipleSave", method = RequestMethod.POST)
    public void UploadFile(MultipartHttpServletRequest request, HttpServletResponse response) {

        Iterator<String> itr=request.getFileNames();

        MultipartFile file=request.getFile(itr.next());

        String fileName=file.getOriginalFilename();
        System.out.println(fileName);
    }

MultipartHttpServletRequest请求中的内容为空。

1 个答案:

答案 0 :(得分:0)

您的请求标头中的加密类型应设置为multipart/form-data

$http.post('multipleSave', data, {
      transformRequest: function(data, headersGetterFunction) {
          return data;
      },
      headers: { 
         'Content-Type': undefined,
         enctype:'multipart/form-data'
      }
})