我正在尝试根据以下链接中的教程上传文件, http://www.encodedna.com/angularjs/tutorial/angularjs-file-upload-using-http-post-formdata-webapi.htm
但问题是formdata请求中没有File,http.POST请求在调用时失败。我花了很多时间在这上面,我无法发现任何错误。有人可以帮我解决这个问题。
// NOW UPLOAD THE FILES.
$scope.uploadFiles = function (id) {
formdata.append('pid', id);
debugger;
var request = {
method: 'POST',
url: '/api/Project/PostProjectFiles',
data: formdata,
headers: {
'Content-Type': undefined
}
};
console.log(request);
// SEND THE FILES.
$http(request)
.then(function (d) {
alert(JSON.stringify(d));
})
.catch(function (d) {
alert(JSON.stringify(d));
console.log(d);
});
}
var formdata = new FormData();
$scope.getTheFiles = function ($files) {
//debugger;
angular.forEach($files, function (value, key) {
formdata.append(key, value);
});
console.log($files);
};
myApp.directive('ngFiles', ['$parse', function ($parse) {
function fn_link(scope, element, attrs) {
var onChange = $parse(attrs.ngFiles);
element.on('change', function (event) {
onChange(scope, {
$files: event.target.files
});
});
};
return {
link: fn_link
}
}]);
我怀疑上面的getthefiles()方法更多bcos $ files包含文件,但formdata不包含文件。
HTML代码,
<div class="col-sm-8 panelpadding">
<div>
<input type="file" id="file1" name="file1" ng-model="project.file1" ng-files="getTheFiles($files)" class="col-sm-4" />
</div>
<div class="col-sm-12 text-center">
<button type="button" ng-click="uploadFiles(41)">Upload Documents</button>
</div>
</div>
我也尝试了所有这些方法来捕捉归档数据,但它没有成功。每次我在httprequest中获得[object object]
。
var httpRequest = HttpContext.Current.Request;
var FileObject = httpRequest.Params[0];
var FObject = httpRequest.Form[0];
id = Convert.ToInt32(httpRequest.Params[1]);