通过Angular到Web Api的HttpPostedFileBase始终为null

时间:2015-03-30 19:15:11

标签: angularjs api model-view-controller web httppostedfilebase

我正在尝试上传Azure的大文件,我可以通过jQuery和标准MVC控制器来上传。

但是我想通过AngularJS上传到Web Api来执行上传。我把Angular表格当作......

<div class="jumbotron" ng-app="myAppModule">
    <div ng-controller="myAppController">
            <span>Choose Video</span>
            <input type="file" id="file" name="file" class="upload" />
            <input type="submit" ng-click="save()" value="Upload" />
    </div>
</div>

controller.js是......

app.controller('myAppController', function ($scope, myAppService) {
$scope.save = function () {
var f = document.getElementById('file').files[0];

    var FileUpload = {
        FileName: "Filename Temp",
        Description: "Description Temp",
        File: f
    };

        var promisePost = myAppService.post(UploadFile);
        promisePost.then(function (pl) {
        // do something..
        }, function (err) {
            console.log("Err" + err);
        });
    };
});

service.js是......

app.service('myAppService', function ($http) {
this.post = function (UploadFile) {
      var request = $http({
        method: "post",
        url: "/api/uploadapi",
        data: UploadFile
    });
    return request;
    }
});

我的模特是......

public class UploadFile
{
    public string FileName { get; set; }
    public string Description { get; set; }
    public HttpPostedFile File { get; set; }
}

仅测试我的Web Api“帖子”是......

public void Post(UploadFile thePostedFile)
{
    //do something...
}

单步执行我可以通过console.log直到service.js文件查看文件名,描述和文件本身。 api被调用,我可以在UploadModel模型中看到文件名和描述,但HttpPostedFileBase文件始终为null。

我发现这个AngularJS方法非常干净和紧凑但我仍然坚持如何填充HttpPostedFileBase。

如果我出错的话,有人可以提出建议吗?

感谢。

0 个答案:

没有答案