我正在尝试使用AngularJS上传包含2个属性,名称和图片的目标文件。我知道这个话题已被多次处理,但无论我读什么,我似乎无法使其工作。 我正在使用Java Spring作为我的服务器,当我尝试通过我的客户端上传“字符”(名称+图片)时,我在服务器中收到此错误:“所需的请求正文内容丢失”...
这是我的代码:
.config(function($stateProvider, $httpProvider, $resourceProvider) {
$resourceProvider.defaults.stripTrailingSlashes = false;
$httpProvider.defaults.transformRequest = function(data) {
if (data === undefined)
return data;
var fd = new FormData();
angular.forEach(data, function(value, key) {
if (value instanceof FileList) {
if (value.length == 1) {
fd.append(key, value[0]);
} else {
angular.forEach(value, function(file, index) {
fd.append(key + '_' + index, file);
});
}
} else {
fd.append(key, value);
}
});
return fd;
}
$httpProvider.defaults.headers.post['Content-Type'] = undefined;
这是我的服务:
angular.module('myApp.services', ['ngResource'])
.factory('Character', function($resource) {
return $resource('http://localhost:8080/myApp/character/:id',
{ id: '@id' },
{ update: { method: 'GET', transformRequest: angular.identity, headers: { 'Content-Type': undefined } } }
);
})
.service('popupService', function($window){
this.showPopup = function(message){
return $window.confirm(message);
}
});
最后这就是我在我的控制器中使用它的方式:
.controller('CharacterCreateController',function($scope,$state,$stateParams,Character){
$scope.character = new Character();
$scope.addCharacter = function(){
$scope.character.$save(function(){
$state.go('characters');
});
}
})
有人可以帮帮我吗?我真的不知道该怎么做,这是我第一次尝试使用Angular上传文件。