gpt4 book ai didi

javascript - 使用 Angular 将文件传递到 asp.net Controller

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:57 25 4
gpt4 key购买 nike

我需要从

上传文件
<input class="fromFileInput" id="VeryfyFromFileInput" type="file" fileread="fileContent" ng-click=uploadFile />

使用 Angular

Controller :

    $scope.fileInformation = [];

$scope.uploadFile = function () {
$scope.fileModel = $('#VeryfyFromFileInput');
recordsService.passFile($scope.fileModel.context);
};

服务:

        this.passFile = function (data) {
return $http({
method: 'POST',
url: url + "/GetFile",
data: data,
headers: { 'Content-Type': 'application/json' }
});
};

到 ASP.NET MVC Controller

    [HttpPost]
public void GetFile([FromBody] HttpRequestMessage file)
{

}

但是我总是为空,所以我必须使用哪种类型的参数而不是“HttpRequestMessage”?或者可能是 JS 方面的问题?

最佳答案

您无法将字节数据作为 application/json 传递。一种解决方案是使用表单数据对象并将 ajax 调用作为 multipart/formdata。使用以下 Ajax 调用。

         $.ajax({
url: 'api/controller/action',
processData: false,
contentType: false,
type: 'POST',
data: formDataObject,
success: function () {
alert('yay!');
},
error: function () {
alert('nay :c');
}
});

我使用了 angular-ui 文件上传指令。我不确定您访问它的方式是否有效,如果有效,那么您只需使用以下语法将文件添加到 FormData

var formDataObject = new FormData();
formDataObject.append('file', $scope.fileModel;

在服务器上使用此代码段访问您的数据

 var filesReadToProvider = await Request.Content.ReadAsMultipartAsync();
foreach (var stream in filesReadToProvider.Contents)
switch (stream.Headers.ContentDisposition.Name)
{
case "\"file\"":
byte[] fileData = await stream.ReadAsByteArrayAsync();
break;
default:
break;

}

}

有关如何将字节数组作为文件写入服务器的信息,请遵循:Write File to server

祝你好运!

关于javascript - 使用 Angular 将文件传递到 asp.net Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137955/

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