如何使用 AngularJS 上传 FormData 对象
How to upload FormData object using AngularJS
我是 angular-js 的新手,想提交带有图像的 multipart/form-data 并且它的 $http.post() 方法仅支持 json 格式,所以我想将 formdata 对象转换为 json 格式,
$scope.SubmitForm=function()
{
url = siteurl + '/admin/' + $scope.module + '/add';
var form=document.getElementById("addForm");
var formData=new FormData(form);
$http({
url : url,
method : "POST",
data : formData,
})
.then(function(responseText) {
alert(JSON.stringify(responseText));
//process data
},function(){
alert("hello from error");
});
}
它对我不起作用;我尝试为此制作 json 格式数据并且工作正常
formData={
"first_name" : $('#first_name').val(),
"last_name" : $('#last_name'),
//....
};
但不知道要将我的图像文件附加到这种格式;我应该在这里做什么才能找到工作。
有什么方法(函数)可以将 formdata 对象转换为 json 格式
在 angular 中使用表单时,您真的应该使用 ng-model
(您可以在您的示例中提供您的表单吗?)。它创建一个范围变量以在您的控制器中使用,如果它已经定义,您将有两种方式绑定......例如,因为您的表单不存在我会做这样的事情,这是简化的(并且没有测试)...:[=14=]
<form name="myForm" ng-submit="SubmitForm()">
Name: <input ng-model="fields.name">
Address: <input ng-model="fields.address">
....
</form>
并在您的 JS 控制器中...
$scope.submitForm = function(){
var data = $scope.fields,
url = '/admin/' + $scope.module + '/add'; // I assume $scope.module is available from elsewhere...
$http.post(url, data).then(function(resp){
// do stuff...
});
}
这里有更多信息...https://docs.angularjs.org/api/ng/directive/ngModel and W3schools have some examples: http://www.w3schools.com/angular/angular_forms.asp
应该这样构造:
var form = document.getElementById('addForm');
var fd = new FormData(form);
var file = this.files[0];
fd.append("afile", file);
// These way you add extra parameters
fd.append("first_name", $('#first_name').val());
fd.append("last_name", $('#last_name').val());
参考示例 - from github
通过在 $http 配置行中放置如下两行代码解决(感谢大家)-
$http({
url : url,
method : "POST",
data : formData,
transformRequest: angular.identity, // see the angugular js documentation
headers : {'Content-Type':undefined}// setting content type to undefined that change the default content type of the angular js
}).then(function(responseText){
alert(JSON.stringify(responseText));
///$scope.tablerows=$scope.totaltablerows;
///$scope.searchFunction();
},function(){
alert("hello from error");
});
这对我有用
我是 angular-js 的新手,想提交带有图像的 multipart/form-data 并且它的 $http.post() 方法仅支持 json 格式,所以我想将 formdata 对象转换为 json 格式,
$scope.SubmitForm=function()
{
url = siteurl + '/admin/' + $scope.module + '/add';
var form=document.getElementById("addForm");
var formData=new FormData(form);
$http({
url : url,
method : "POST",
data : formData,
})
.then(function(responseText) {
alert(JSON.stringify(responseText));
//process data
},function(){
alert("hello from error");
});
}
它对我不起作用;我尝试为此制作 json 格式数据并且工作正常
formData={
"first_name" : $('#first_name').val(),
"last_name" : $('#last_name'),
//....
};
但不知道要将我的图像文件附加到这种格式;我应该在这里做什么才能找到工作。
有什么方法(函数)可以将 formdata 对象转换为 json 格式
在 angular 中使用表单时,您真的应该使用 ng-model
(您可以在您的示例中提供您的表单吗?)。它创建一个范围变量以在您的控制器中使用,如果它已经定义,您将有两种方式绑定......例如,因为您的表单不存在我会做这样的事情,这是简化的(并且没有测试)...:[=14=]
<form name="myForm" ng-submit="SubmitForm()">
Name: <input ng-model="fields.name">
Address: <input ng-model="fields.address">
....
</form>
并在您的 JS 控制器中...
$scope.submitForm = function(){
var data = $scope.fields,
url = '/admin/' + $scope.module + '/add'; // I assume $scope.module is available from elsewhere...
$http.post(url, data).then(function(resp){
// do stuff...
});
}
这里有更多信息...https://docs.angularjs.org/api/ng/directive/ngModel and W3schools have some examples: http://www.w3schools.com/angular/angular_forms.asp
应该这样构造:
var form = document.getElementById('addForm');
var fd = new FormData(form);
var file = this.files[0];
fd.append("afile", file);
// These way you add extra parameters
fd.append("first_name", $('#first_name').val());
fd.append("last_name", $('#last_name').val());
参考示例 - from github
通过在 $http 配置行中放置如下两行代码解决(感谢大家)-
$http({
url : url,
method : "POST",
data : formData,
transformRequest: angular.identity, // see the angugular js documentation
headers : {'Content-Type':undefined}// setting content type to undefined that change the default content type of the angular js
}).then(function(responseText){
alert(JSON.stringify(responseText));
///$scope.tablerows=$scope.totaltablerows;
///$scope.searchFunction();
},function(){
alert("hello from error");
});
这对我有用