我正在尝试使用ng-file-upload上传多个文件,但我似乎无法让它工作。
我的html是
<input ngf-select ng-model="files" ngf-multiple="true" id="files" name="files" type="file" value="Choose File(s)" />
添加文件后的按钮
<button ng-click="uploadFiles(files)">Upload</button>
我的控制器类似于github和 jsfiddle 上提供的示例。
$scope.uploadFiles = function (files) {
if (files && files.length) {
angular.forEach(files, function (file) {
$log.warn("counter");
if (files && !file.$error) {
file.upload = Upload.upload({
url: "FileUpload.ashx",
file: file,
fields: {
FormInstanceGuid: $scope.model.FormInstanceGuid,
FormName: $scope.model.Template.Name
}
});
file.upload.then(function (response) {
$log.info("We have succeeded in our call!");
$log.info(response);
}, function (reason) {
$log.info("We have failed in our call!");
$log.info(reason);
});
}
});
我的问题归结为UploadHandler(在服务器上)只被调用一次并且只有1个文件进入。我的想法是它应该为每个文件调用一次,因为它位于forEach循环内。
if (context.Request.Files.Count > 0) //This is never greater than 1
{
HttpFileCollection SelectedFiles = context.Request.Files;
for (int i = 0; i < SelectedFiles.Count; i++) {
HttpPostedFile file = SelectedFiles[i];
}
}
我检查了网络选项卡,每个文件都在自己的 POST 中。