Laravel 5.3 mehrere Datei-Uploads

In Laravel 5.3 können Sie die Methode file des Request-Objekts verwenden, um mehrere Datei-Uploads zu verarbeiten. Hier ist ein Beispiel dafür, wie Sie mehrere Datei-Uploads in einem Formular verarbeiten können:

  1. Stellen Sie in Ihrem Formular sicher, dass das Datei-Eingabefeld ein name-Attribut mit dem Wert files[] hat. Dies ist wichtig, da es Laravel mitteilt, dass das Eingabefeld ein Array von Dateien ist.
<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple>
    <input type="submit" value="Upload">
</form>
  1. In der Controller-Methode, die das Formular-Übermittlung verarbeitet, können Sie die Methode file des Request-Objekts verwenden, um auf die hochgeladenen Dateien zugreifen zu können. Die Methode file gibt für jede hochgeladene Datei eine Instanz der Klasse UploadedFile zurück.
<?php

public function upload(Request $request)
{
    foreach ($request->file('files') as $file) {
        // $file ist eine Instanz von UploadedFile
        // Sie können es verwenden, um die Datei auf die Festplatte oder in die Datenbank zu speichern
    }
}
  1. Sie können die Dateien jetzt an einen bestimmten Ort mit Hilfe der store oder storeAs-Methode verschieben, die von der Klasse UploadedFile bereitgestellt wird.
<?php

foreach ($request->file('files') as $file) {
    $file->store('public/images');
}

Hinweis: Um die Dateien mit einem eindeutigen Namen zu speichern, können Sie die Methode storeAs verwenden und einen eindeutigen Namensgenerator wie str_random verwenden

foreach ($request->file('files') as $file) {
    $file->storeAs('public/images', str_random(20) . '.' . $file->guessExtension());
}

Es wird auch empfohlen, die Dateien vor dem Verschieben an einen bestimmten Ort mit Hilfe der Validierungsregeln von Laravel zu validieren.