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
filedesRequest-Objekts verwenden, um auf die hochgeladenen Dateien zugreifen zu können. Die Methodefilegibt für jede hochgeladene Datei eine Instanz der KlasseUploadedFilezurü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
storeoderstoreAs-Methode verschieben, die von der KlasseUploadedFilebereitgestellt 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.