Ich habe hier ein Problem, wenn ich versuche, Daten mit angularjs Controller zu pushen. Aber was auch immer ich mache (IFormFile-Datei) ist immer leer. Es gibt nur einige Beispiele mit Rasierersyntax, aber keine Beispiele, wie man es mit eckigen oder jQuery macht.IFormFile ist immer leer in 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>
Richtlinie:
(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
};
}]);
})();
-Controller
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 Kern WebAPI:
[HttpPost]
public async Task<IActionResult> PostProductProjectFile(IFormFile file)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
....
return ...;
}
Ich habe auch versucht, es mit formdata zu tun, wie es konstruiert wird, wenn Sie es mit Rasierersyntax veröffentlichen. Etwas wie folgt aus:
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
}
auch statt Formdata Raw-Datei zur Verfügung zu stellen, wie ich in Kommentar schrieb. Aber immer noch nichts passiert
Es würde helfen, wenn Sie teilen könnten, wie Ihr Anfragekörper aussieht (ich bin nicht am Inhalt der geposteten Datei interessiert, sondern an allem anderen). Sie können es aus der Entwickler-Tool-Diagnose eines Browsers abrufen. –
Dies ist, wenn es rawfile ist 'lastModified: 1461136463443 LastModifiedDate: Mi 20. April 2016 09.14.23 GMT + 0200 (W. Europe Daylight Time) Name: "snip_20160420091420.png" Größe: 3563 Typ:“ image/png " webkitRelativePath:" "' Und wenn es Formulardaten sind, als ich es nicht lesen kann, ist es nur '__proto __: FormData' – error505