Ho un problema qui quando sto provando a spingere i dati con il controller angularjs. Ma qualunque cosa io faccia (file IFormFile) è sempre vuota. Ci sono solo alcuni esempi con la sintassi del rasoio, ma nessun esempio su come farlo con angular o jquery.IFormFile è sempre vuoto 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>
direttiva:
(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 nucleo WebAPI:
[HttpPost]
public async Task<IActionResult> PostProductProjectFile(IFormFile file)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
....
return ...;
}
Ho anche provato a farlo con i formdata, dato che è costruito quando lo pubblichi con la sintassi del rasoio. Qualcosa di simile a questo:
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
}
Inoltre, invece di formdata per fornire file raw come ho scritto nel commento. Ma ancora non succede nulla
sarebbe utile se si potesse condividere come il corpo della richiesta è simile (non sono interessato al contenuto del file pubblicato ma tutto il resto). Puoi prenderlo dalla diagnostica degli strumenti di sviluppo di un browser. –
Questo è quando è rawfile 'LastModified: 1.461.136,463443 millions LastModifiedDate: Mer 20 Apr 2016 09:14:23 GMT + 0200 (W. Europe Daylight Time) nome: "snip_20160420091420.png" dimensioni: 3563 tipo:" image/png " webkitRelativePath:" "' E quando si tratta di dati di forma che non riesco a leggerlo, è solo '__proto __: FormData' – error505