我正在使用angularJS调用后端服务以上传多部分文件,但是遇到错误。响应来自我的服务,但是由于上述承诺错误,我无法从那里获得对角度控制器的响应。
fileUploadService:
(function() {
'use strict';
angular
.module('module')
.factory('FileUpload', FileUpload);
FileUpload.$inject = ['$http'];
function FileUpload($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(response){
})
.error(function(error){
});
}
return this;
}
})();
controller.js:
$scope.onFilesSelected = function(files) {
var uploadUrl = "/api//customer/logo";
FileUpload.uploadFileToUrl(files[0], uploadUrl).then(
function(result){
var logo = FileUpload.getResponse();
vm.setLogo(logo);
// $scope.errors = FileUpload.getResponse();
}, function(error) {
alert('error');
});
};
答案 0 :(得分:0)
您的uploadFileToUrl()
函数没有return语句,因此它返回undefined
。我想您是要退还$http
返回的承诺:
this.uploadFileToUrl = function(file, uploadUrl) {
var fd = new FormData();
fd.append('file', file);
// Notice the return statement below
return $http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(response){
})
.error(function(error){
});
}
答案 1 :(得分:0)
您没有返回任何值。因此,如下所示在成功和错误回调中返回响应
.success(function(response){
return response;
})
.error(function(error){
return error
});