Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Angular JS从Asp.net MVC中的Request.Files中识别输入类型文件_C#_Asp.net_Asp.net Mvc_Angularjs_Input Type File - Fatal编程技术网

C# 使用Angular JS从Asp.net MVC中的Request.Files中识别输入类型文件

C# 使用Angular JS从Asp.net MVC中的Request.Files中识别输入类型文件,c#,asp.net,asp.net-mvc,angularjs,input-type-file,C#,Asp.net,Asp.net Mvc,Angularjs,Input Type File,我的视图页面中有两个输入类型文件控件。一个用于化身,另一个用于配置文件图像。我把这两张图片都用代码隐藏起来了。 这是我的AngularJS控制器 var app = angular.module('ProfileModule', []); app.controller('ProfileController',['$scope','$http', function ($scope,$http) { $scope.user = {}; $scope.files = [];

我的视图页面中有两个输入类型文件控件。一个用于化身,另一个用于配置文件图像。我把这两张图片都用代码隐藏起来了。 这是我的AngularJS控制器

    var app = angular.module('ProfileModule', []);
app.controller('ProfileController',['$scope','$http', function ($scope,$http) {
    $scope.user = {};
    $scope.files = [];
    var formData = new FormData();
    $scope.LoadFileData = function (files) {
        for (var file in files) {
            formData.append("file", files[file]);
        }
    };
    $scope.submit = function () {
        $http({
            url: "/Profiles/Edit",
            method: "POST",
            headers: { "Content-Type": undefined },
            transformRequest: function (data) {
                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 }
        })
        .success(function (response) { });
    }
}]);
public ActionResult Edit(string user, HttpPostedFileBase[] files)
        {}
我正在获取字符串中的rest模型值,稍后将其解析为模型,但图像文件在文件中显示null,所以我在Request.files中获取它们。
我应该做什么编辑才能在数组中获取该图像文件。

您可以调整控制器操作以接受
HttpPostedFileBase
实例的
IEnumerable

public ActionResult Index(IEnumerable<HttpPostedFileBase> files)

两个输入类型文件控件的名称属性都应设置为“profileImage”和“avatarImage”。然后定义控制器动作,如下所示:

[HttpPost]
ActionResult Edit (string user, HttpPostedFileBase profileImage, HttpPostedFileBase avatarImage)
{
...
}
和html:

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

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

编辑:检查参数是否为非空,并且您已准备就绪

编辑:将用户参数添加到控制器操作


编辑:添加html代码。

假设用户只输入一张图像,我怎么知道该将其放置在头像或个人资料中?您的输入元素应该有唯一的ID,就像其他元素一样。您是否也将名称属性添加到输入中了?是的,我已添加,http post中的转换请求和数据中一定存在问题。请在重试之前修复相同的ID。我在request.File中获得了两个图像,但在arguments中为null。检查是否也更改了ID
[HttpPost]
ActionResult Edit (string user, HttpPostedFileBase profileImage, HttpPostedFileBase avatarImage)
{
...
}
<input id="selector" name="profileImage" type="file" onchange="angular.element(this).scope().LoadFileData(this.files)" accept="image/*"> 

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