1

我正在尝试为 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 文件始终为空。

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

如果/我哪里出错了,谁能告诉我?

谢谢。

4

0 回答 0