我正在尝试为 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。
如果/我哪里出错了,谁能告诉我?
谢谢。