我想在使用$ http之前使用$ resource发布表单数据:
upload : function(file){
let fd = new FormData();
fd.append('file', file);
$http.post('http://localhost:8080/fileUpload', fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
}
现在我想使用$ resource,这就是我尝试做的但它不起作用:
upload : function(file){
let fd = new FormData();
fd.append('file', file);
$resource('http://localhost:8080/fileUpload/:id',fd, {
create: {
method: "POST",
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
}
});
}
从这篇文章AngularJS: Upload files using $resource (solution)有两个解决方案,@ juandemarco指出的第一个解决方案是配置$http
服务,但这将转换AngularJS提出的每个请求,所以第二个@timetowonder指出的一个是更好的解决方案,因为我只需要为实际需要它的那些$资源定义这种行为,所以我尝试了如下:
:
var fd = new FormData();
fd.append('identityDocUpload', $scope.identityDocUpload);
fileUploadService.create({}, fd).$promise.then(function (res) {
console.log('success');
}).catch(function (err) {
console.log('err');
});
我的服务:
app
.factory('fileUploadService', function ($resource) {
return $resource('http://localhost:8080/fileUpload/:id', { id: "@id" }, {
create: {
method: "POST",
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
}
});
});
答案 0 :(得分:1)
正如这里所指出的,你可以按照解释的方式进行,但你会有一些浏览器版本的限制。
在下面的例子中,他正在上传图片。