2017-06-04 3 views
2

Ich versuche, das Formular an eine Laravel 5-Controller-Methode zu senden. Ich verstehe, dass Sie in PHP ein FormData-Objekt definieren können, die Eingabefelder an das Objekt anhängen und es an den Server senden, wo Sie jetzt die Werte mithilfe der Eingabefeldnamen extrahieren können.wie man FormData Objekt in Laravel liest

Wie so:

var form_data = new FormData(); 
formdata.append('file_name', 'some_file_name_from_form.png'); 

Wenn form_data als data in dem Ajax-Aufruf gesendet wird, kann ich die Datei in PHP erhalten, indem die $_FILES['file_name']['name']; verwenden.

Also habe ich diese gleiche Logik in einer Laravel-Controller-Methode versucht. Ich habe versucht, nur den Namen der Datei im $request Objekt zu greifen, aber nur Null.

Meine Controller-Methode:

public function postImage(Request $request) 
{ 
    $file = $request->get('file_name'); 

    dd($file); 
} 

Aber wenn ich die ganze Anfrage dd, sehe ich dieses seltsame Objekt:

array:1 [ "file_name" => UploadedFile {#199 -test: false -originalName: "work-fitness_00255959.png" -mimeType: "image/png" -size: 34215 -error: 0 #hashName: null path: "/tmp" filename: "phpVodsUg" basename: "phpVodsUg" pathname: "/tmp/phpVodsUg" extension: "" realPath: "/tmp/phpVodsUg" aTime: 2017-06-04 12:42:26 mTime: 2017-06-04 12:42:26 cTime: 2017-06-04 12:42:26 inode: 17573243 size: 34215 perms: 0100600 owner: 1000 group: 1000 type: "file" writable: true readable: true executable: false file: true dir: false link: false } ]

Bitte Wie bekomme ich das Bild in Ajax durch FormData() Objekt gesendet durch seinen Namen?

Danke für jede Hilfe

Antwort

4

Sie können dies tun.

// get the `UploadedFile` object 
$file = $request->file('file_name'); 
$file = $request->file_name; 

// get the original file name 
$filename = $request->file('file_name')->getClientOriginalName(); 
$filename = $request->file_name->getClientOriginalName(); 

Schauen Sie sich die Dokumentation für weitere Informationen https://laravel.com/docs/5.4/requests#retrieving-uploaded-files

Die api Methoden, die auf der hochgeladenen Datei http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

+0

Vielen Dank –

0

Der Code unten ist für mich arbeiten:

$("#your_form").submit(function(e){ 
    e.preventDefault(); 
    var form = $(this); 
    var url = form.attr("action"); 
    var data = new FormData(form[0]); 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     data: data, 
     cache: false, 
     processData: false, 
     contentType : false, 
     success: function (data) { 
      console.log(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      console.log(jqXHR, textStatus, errorThrown); 
     } 
    }); 
}); 

mein Problem war in der Eigenschaft contentType. Also, ich setze mich als falsch und es ist ok!