2017-07-22 6 views
0

JS:Zugang in Formdata Laravel

var file = e.originalEvent.dataTransfer.files[0]; 
var formData = new FormData(); 

formData.append('file', file) 

$.ajaxSetup ({ 
    processData: false 
}); 

$.post('/addaltproduct', 
    { 
     file: formData 
    }, 
    function (data) { 
     console.log(data); 
}).fail(function (xhr, textStatus, errorThrown) { 
     console.log(xhr.responseText); 
}); 

Controller:

if ($request->file('file')) { 
    return 'OK'; 
} 
return 'No file'; 

Im Gegenzug erhalte ich immer 'Keine Datei', obwohl, wenn ich console.log(formData.get('file')) in JS führen Sie es mir die Daten zeigt.

+2

I don‘ Ich weiß genau, was passiert. Das Formular zum Hochladen der Datei sollte jedoch die folgenden Attribute haben: 'method =" post "enctype =" multipart/form-data "' – SaidbakR

Antwort

1

Sie müssen die formData direkt ohne einen Schlüssel als zweiten Parameter übergeben und die contentType zu false

var file = e.originalEvent.dataTransfer.files[0]; 
var formData = new FormData(); 

formData.append('file', file); 
formData.append('_token', '{{ csrf_token() }}'); 

$.ajaxSetup ({ 
    processData: false, 
    contentType: false 
}); 

$.post('/addaltproduct', 
    formData, 
    function (data) { 
     console.log(data); 
}).fail(function (xhr, textStatus, errorThrown) { 
     console.log(xhr.responseText); 
}); 

Dann in Ihrem Controller setzen Sie für Datei überprüfen könnte als

if ($request->hasFile('file')) { 
    if($request->file('file')) { 
     return 'OK'; 
    } 
} 
return 'No File';