嗨,我正在开发angularjs应用程序。我有文件上传模块。我将文件数据追加到FormData如下。
var filesformdata = new FormData();
angular.forEach(this.pendingFiles, function (value, key) {
filesformdata.append(key, value);
});
for (var pair of filesformdata.entries()) {
console.log(pair[0] + ', ' + pair[1]);
}
这是我的角度代码。
angular.module('RoslpApp').factory('fileUpload', ['$http', function ($http) {
debugger;
var fileuploadurl = "http://localhost:19144/" + 'api/Customer/UploadLeaseFiles/' + 2;
var service = {
uploadUrl: fileuploadurl,
pendingFiles: [],
doUpload: doUpload
};
return service;
function doUpload() {
debugger;
var filesformdata = new FormData();
angular.forEach(this.pendingFiles, function (value, key) {
filesformdata.append(key, value);
});
for (var pair of filesformdata.entries()) {
console.log(pair[0] + ', ' + pair[1]);
}
return $http.post(this.uploadUrl, filesformdata, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
})
}
}]);
这是指令代码。
myapp.directive('fileModel', ['fileUpload', function (fileUpload) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind("change", function (evt) {
fileUpload.pendingFiles[attrs.fileModel] = evt.target.files[0];
});
}
};
}]);
这是上传功能
$scope.upload = function (filename) {
debugger;
fileUpload.doUpload().success(function (success) {
console.log(success);
});
};
这是html代码。
<div class="upload-button" ng-repeat="file in files">
<div class="upload-button-icon">
<img src="images/folder-small.png">
<div class="upload-text">{{file}}</div>
<input type="file" id="file1" name="file1" file-data="{{file}}" file-model="{{file}}"/>
</div>
</div>
<input type="submit" value="{{ 'NEXT' | translate }}" class="blue-button" ng-click="upload()">
最终当我使用console.log或使用下面的代码在api中显示时,我在this.pendingFiles中有文件,但我没有得到文件。
System.Web.HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;
// CHECK THE FILE COUNT.
UploadedLeaseFiles totalDocumentInserted = null;
for (int iCnt = 0; iCnt <= hfc.Count - 1; iCnt++)
我在this.pendingFiles中有文件。请查看屏幕截图。
我的filesformdata FormData始终为空。我可以在这里得到一些帮助来解决此问题吗?谢谢。
最佳答案
FormData对象filesformdata中的数据不会通过使用console.log()检查来显示。它在那里,您只是看不到它。但是,您可以在“请求负载”下的“网络”标签中查看它。