it-swarm.com.de

wie man ein FormData Objekt einliest Laravel

Ich versuche, ein Formular an eine Laravel 5-Controller-Methode zu senden. Ich verstehe, dass Sie in PHP ein FormData-Objekt definieren, die Eingabefelder an das Objekt anhängen und an den Server senden können, auf dem Sie nun die Werte unter Verwendung der Eingabefeldnamen extrahieren können.

Wie so:

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

Wenn im Ajax-Aufruf form_data als data gesendet wird, kann ich die Datei in PHP abrufen, indem ich den $_FILES['file_name']['name']; verwende.

Also habe ich dieselbe Logik in einer Laravel Controller-Methode ausprobiert. Ich habe nur versucht, den Namen der Datei im Objekt $request abzurufen, habe aber nur null erhalten.

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}]

Wie erhalte ich das Bild, das über das Objekt FormData() in Ajax gesendet wird, als Namen?

Danke für jede Hilfe

3
Awa Melvine

Du kannst das.

// 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();

Weitere Informationen finden Sie in der Dokumentation. https://laravel.com/docs/5.4/requests#retrieving-uploaded-files

Die in der hochgeladenen Datei verfügbaren API-Methoden http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

7
Sandeesh

Der folgende Code funktioniert für mich:

$("#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 habe ich falsch gesetzt und es ist in Ordnung!

1
Rafael Keller