gpt4 book ai didi

asp.net - 使用 AngularJS 和 Asp.Net MVC 上传带有 FormData 的多个文件

转载 作者:行者123 更新时间:2023-12-04 21:38:34 25 4
gpt4 key购买 nike

我想使用 angular js 上传多个文件,为此我使用 FormData() 。

这是我的表单字段

    <input name="profileImage" type="file" class="upload"
onchange="angular.element(this).scope().LoadFileData(this.files)" accept="image/*">

<input name="avatarImage" type="file" class="upload"
onchange="angular.element(this).scope().LoadFileData(this.files)" accept="image/*">

<input name="Id" type="text" ng-model="user.Id" />
<input name="Name" type="text" ng-model="user.Name" />

这是我的 Asp.Net MVC Controller
public ActionResult AddUser(string user, HttpPostedFileBase[] files)
{
// parse user into User
}

和 Angular Controller
.controller('formController',['$scope','$http', function ($scope, $http) {
$scope.user = {
Id: 0,
Name: ""
};
$scope.files = [];

$scope.LoadFileData = function(files) {
$scope.files = files;
};

$scope.submit = function() {
$http({
url: "/Home/AddUser",
method: "POST",
headers: { "Content-Type": undefined },
transformRequest: function(data) {
var formData = new FormData();
formData.append("user", angular.toJson(data.user));
for (var i = 0; i < data.files.length; i++) {
formData.append("files[" + i + "]", data.files[i]);
}
return formData;

},
data: { user: $scope.user, files: $scope.files }
})
.success(function(response) { });
};
});

问题是我想上传不止一张图片,一张用于个人资料,另一张用于头像。当我同时上传两个时,只显示第二个覆盖前一个。我试图推送 $scope.files.push(files) 但它给出了 null.Need 帮助我在那里缺少的东西。

最佳答案

更改 LoadFileData功能

$scope.LoadFileData = function (files) {
$scope.files.push(files[0]);
};
files返回一个 Filelist 对象,实际文件对象位于索引 0。

关于asp.net - 使用 AngularJS 和 Asp.Net MVC 上传带有 FormData 的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com