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:
- Stellen Sie in Ihrem Formular sicher, dass das Datei-Eingabefeld ein
name
-Attribut mit dem Wertfiles[]
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>
- In der Controller-Methode, die das Formular-Übermittlung verarbeitet, können Sie die Methode
file
desRequest
-Objekts verwenden, um auf die hochgeladenen Dateien zugreifen zu können. Die Methodefile
gibt für jede hochgeladene Datei eine Instanz der KlasseUploadedFile
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
}
}
- Sie können die Dateien jetzt an einen bestimmten Ort mit Hilfe der
store
oderstoreAs
-Methode verschieben, die von der KlasseUploadedFile
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.