如何使用angular JS上传文件并将其发送到C#web API?

时间:2017-10-03 07:33:17

标签: c# angularjs asp.net-web-api

我想上传包含一些文字的文件(可能是.csv.txt.xls等),我希望文档能够由C#处理。我在前端使用Angular JS而在WebAPI使用C#。

我需要帮助如何将文件上传到C#?

我试过了:

在C#WebAPI控制器中:

    [HttpPost]
    [Route("api/GetCalimCsv")]
    public string GetCalimCsv(dynamic content)
    {
        return content;
    }

获得空值。

在角度控制器中:

$scope.fileNameChanged = function (ele) {
    var formData = new FormData();
    formData.append('claim', ele.files[0]);
    $http({
        method: 'POST',
        url: '/api/GetCalimCsv/',
        data: formData
        }).then(function successCallback(response) {
        alertify.success(response.data);
    }, function errorCallback(response) {
        alertify.error(response.status);
    });

在CSHTML文件中:

<input ng-model="Claim" ng-required="true"
    type="file" accept=".js, .css, .txt, .doc, .docx, .csv, .xls | text/*"
    onchange="angular.element(this).scope().fileNameChanged(this)" />

文件输入期间的示例截图: JavaScript is getting the file name

1 个答案:

答案 0 :(得分:0)

尝试使用如下指令

.directive('fileModel', ['$parse', function($parse) {
        function fn_link(scope, element, attrs) {
            var onChange = $parse(attrs.fileModel);
            element.on('change', function (event) {
                onChange(scope, { $files: event.target.files });
            });
        };
        return {
            link: fn_link
        }
    }])

然后将input type = file替换为

<input type="file" id="fileId" file-model="myFiles($files)"/>

然后在您的控制器中添加此

var formData = new FormData();
        $scope.myFiles = function($files) {
            formData.append('img', $files[0]);
}

替换&#39; img&#39;到后端需要的名称 如果您想添加内容,请使用formData中的键添加每个值以发送

formData.append('title', form.title);

和你的$ http方法

$http.post('YOUR SERVER API URL', formData)