我正在尝试上传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。
如果我出错的话,有人可以提出建议吗?
感谢。