У меня возникла проблема, когда я пытаюсь нажать данные с помощью контроллера angularjs. Но то, что я делаю (файл IFormFile), всегда пуст. Есть только некоторые примеры с синтаксисом бритвы, но нет примеров, как это сделать с угловым или jquery.IFormFile всегда пуст в Asp.Net Core WebAPI
HTML:
<form class="form-body" enctype="multipart/form-data" name="newFileForm" ng-submit="vm.addFile()"><input type="file" id="file1" name="file" multiple ng-files="getTheFiles($files)"/></form>
Директива:
(function() {
'use strict';
angular
.module('app')
.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
};
}]);
})();
Контроллер
var formdata = new FormData();
$scope.getTheFiles = function ($files) {
angular.forEach($files, function (key, value) {
formdata.append(key, value);
});
};
vm.addFile = function() {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-Type", "undefined");
xhr.send(formdata);
}
Asp.net ядро WebAPI:
[HttpPost]
public async Task<IActionResult> PostProductProjectFile(IFormFile file)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
....
return ...;
}
Я также пытался сделать это с помощью formdata, поскольку он создается, когда вы публикуете его с синтаксисом бритвы. Что-то вроде этого:
dataService.addFile(formdata, {
contentDisposition: "form-data; name=\"files\"; filename=\"C:\\Users\\UserName\\Desktop\\snip_20160420091420.png\"",
contentType: "multipart/form-data",
headers: {
"Content-Disposition": "form-data; name=\"files\"; filename=\"C:\\Users\\UserName\\Desktop\\snip_20160420091420.png\"",
'Content-Type': "image/png"
},
fileName: "C:\\Users\\UserName\\Desktop\\snip_20160420091420.png",
name: "files",
length : 3563
}
Также вместо formData для предоставления необработанного файла, как я писал в комментарии. Но до сих пор ничего не происходит
это поможет, если вы можете поделиться тем, как выглядит тело запроса (мне не интересно размещенное содержимое файла, но все остальное). Вы можете получить его из диагностической программы разработчика. –
Это когда rawfile 'LastModified: 1461136463443 lastModifiedDate: ср 20 апреля 2016 9:14:23 GMT + 0200 (W. Europe летнее время) название: "snip_20160420091420.png" размер: 3563 типа:» image/png " webkitRelativePath:" "' И когда это данные формы, чем я не могу прочитать, это просто '__proto __: FormData' – error505