javascript - 无法将图像文件从 ng-file-upload 上传到 Web api

标签 javascript c# angularjs asp.net-web-api ng-file-upload

我正在使用此指令( ng--file-upload )上传图像。
我需要将图像文件包含到 ASP.NET Web API 的 POST 中,但没有成功。
这是我在服务器上的方法:

public async Task<HttpResponseMessage> SaveData([FromBody]PostModel data)

当我发布数据(来自 js Angular )时,除了上传的文件之外,所有数据都在这里:

$http({
            method: 'POST',
            url: path,
            data: data,
            file: photoFile
        }).then(function...

我也尝试将其放入数据中,但它始终为空。
如何在 Web api 上发布和获取图像文件?

作为我得到的回应:

"Invalid 'HttpContent' instance provided. It does not have a content type header starting with 'multipart/'.
 Parameter name: content"

在这一行:

var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

var data = {            
            "Username": $scope.username,
            transformRequest: angular.identity,
            headers: { 'Content-Type': undefined }
        };

        var fd = new FormData();
        fd.append('file', $scope.photoFile);

        $http({
            method: 'POST',
            url: 'path', fd, 
            data: data
        }).the

最佳答案

使用FormData API :

html:

<div class="button" ngf-select="upload($file)">Upload on file select</div>

Controller :

 $scope.upload = function (file) {
    var fd = new FormData();
    fd.append('file', file);

    //Append other data
    //angular.forEach(data,function(v,k){
    //    fd.append(k,v);
    //});

    $http.post('your-upload-url', fd, {
        transformRequest: angular.identity,
        headers: {'Content-Type': undefined}
    })
    .then(function(res){
        // get upload res
    });
};

关于javascript - 无法将图像文件从 ng-file-upload 上传到 Web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37456660/

相关文章:

javascript - 如何从 javascript 函数中删除 .onchange 处理程序

javascript - 在 Angular Controller 中迭代 JSON 数组

c# - Linq 查询数据源,InvalidOperationException

angularjs - Protractor 和 appium - 无法读取未定义的属性

javascript - Angularjs Controller 不工作,抛出错误(新手)

javascript - 运行 jasmine 测试时,我怎么知道我是在 describe block 、beforeEach block 还是 it block 中?

javascript - setState 在 axios fetch 中不起作用

c# - GetType 返回 Int 而不是 System.Int32

c# - 使用 List<> 时使用 ListBox(带有 ItemTemplate)的正确方法

javascript - Angular ng-href 与 Split 方法