Datei in Laravel hochladen

Linda Hamilton
Freigeben: 2024-09-19 18:15:03
Original
647 Leute haben es durchsucht

Sie können Dateien in Laravel hochladen, indem Sie die schöne einheitliche API verwenden, um mit vielen verschiedenen Arten von Speichersystemen zu interagieren, von der lokalen Festplatte bis zum Remote-Objektspeicher wie S3.

Wie viele andere Laravel-Komponenten können Sie über die Speicherfassade mit dem Anwendungsdateisystem interagieren: Illuminate/Support/Facades/Storage

Diese Klasse ermöglicht Ihnen den Zugriff auf Speichertreiber, sogenannte Festplatten, die eine gemeinsame Schnittstelle implementieren. So können Sie den zugrunde liegenden physischen Speicher ändern, ohne Ihren Anwendungscode zu ändern.

Dadurch können Sie nicht nur auf die gleiche Weise von Ihrem lokalen Dateisystem, FTP oder AWS S3 lesen und schreiben, sondern auch eine andere Option wählen, je nachdem, ob Sie in der lokalen Umgebung entwickeln oder die Anwendung in der Produktion ausführen .

Wenn Sie erfahren möchten, wie Sie Ihre individuelle Fassade bauen, lesen Sie den folgenden Artikel:

https://inspector.dev/how-to-extend-laravel-with-driver-based-services/

Für weitere technische Artikel können Sie mir auf Linkedin oder X folgen.

Konfigurieren von Speicherfestplatten in Laravel

Laravel verwaltet den Zugriff auf den Speicher über „Festplatten“, die in der Konfigurationsdatei config/filesystems.php konfiguriert sind. Jede Festplatte hat einen identifizierenden Namen und einen Treiber, mit dem Sie den tatsächlichen Typ des Speichersystems definieren können, das mit der Anwendung verbunden wird.

Je nach Treiber sind dann weitere Optionen konfigurierbar. Bei Datenträgern mit lokalen Treibern muss beispielsweise der Root-Parameter festgelegt werden, um anzugeben, welchem ​​tatsächlichen lokalen Verzeichnis sie entsprechen. Diejenigen mit S3-Treibern müssen die verschiedenen Schlüssel, Geheimnisse, Regionen und Buckets festlegen, um auf AWS S3 oder S3-kompatible Systeme zuzugreifen.

Die öffentliche Festplatte

Unter den verschiedenen standardmäßig konfigurierten Festplatten ist die mit dem Namen „public“ eine der interessantesten. Dieser Datenträger dient zum Hosten der Dateien, die von der Laravel-Anwendung öffentlich zugänglich gemacht werden müssen.

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
],
Nach dem Login kopieren

Wie Sie im Snippet oben sehen können, hat die Festplatte den lokalen Treiber und das Stammverzeichnis ist das Verzeichnis private storage/app/public.

Wie kann ein privates Verzeichnis öffentlich zugänglich sein?

Damit die öffentliche Festplatte funktioniert, müssen Sie einen Symlink erstellen, um den öffentlichen Laravel-Ordner mit dem auf der Festplatte konfigurierten privaten Stammverzeichnis zu verbinden.

Upload File in Laravel

Glücklicherweise verfügt Laravel über einen integrierten Befehl, um diese Einrichtung automatisch durchzuführen.

php artisan storage:link
Nach dem Login kopieren

Sie sollten diesen Befehl ausführen, wenn Sie Ihre Laravel-Anwendung zum ersten Mal auf einem Computer installieren, einschließlich Ihrer lokalen Umgebung.

Wenn Sie einen Symlink erstellen, verbindet Laravel den Ordner „storage/app/public“ mit dem Ordner „public/storage“. Das heißt, wenn Sie eine Datei auf einer öffentlichen Seite anzeigen möchten, können Sie Folgendes tun:

{{ asset('storage/file.txt') }}
Nach dem Login kopieren

Die Datei ist physisch in storage/app/public gespeichert, aber dank des Symlinks können Sie über den Pfad yourdomain.com/storage/filename.ext darauf zugreifen

Dies ist erforderlich, da der öffentliche Ordner normalerweise das Stammverzeichnis des Webservers (Apache, NGINX usw.) ist und daher der einzige Pfad ist, auf den Ihre Website oder App verweisen kann. Der Symlink macht einen Teil des Speicherordners nach außen verfügbar.

Datei in Laravel hochladen

Hier ist ein Beispiel für ein HTML-Formular, um das Hochladen von Dateien zu ermöglichen:

<form action="/avatar" method="POST" enctype="multipart/form-data"> 
    {{ csrf_field() }}

    <input type="file" name="avatar"/>

    <button type="submit"></button> 
</form>
Nach dem Login kopieren

Das Speichern dieser Datei auf der Festplatte ist sehr einfach. Das Anforderungsobjekt verfügt über die Dateimethode, mit der Sie Elemente abrufen können, die aus einem Formularfeld vom Typ Datei gesendet wurden. Sie können das Element erhalten, indem Sie den Namen des Eingabefelds an die Dateimethode übergeben, um auf die vom Frontend gesendete Datei zuzugreifen.

namespace App/Http/Controllers;

use App/Http/Resources/UserResource;

class AvatarController extends Controller 
{
    public function update(Request $request)
    {
        $path = $request->file('avatar')->store("avatars/{$request->user()->id}");

        $request->user()->update(['avatar' => $path]);

        return new UserResource($request->user());
    }
}
Nach dem Login kopieren

Die Store-Methode ruft die Datei aus der Anfrage ab und speichert sie auf der Festplatte. Dabei wird eine eindeutige ID für den Dateinamen generiert, während die Dateierweiterung aus dem in der Anfrage angegebenen MIME-Typ abgerufen wird. Es gibt den Pfad der gespeicherten Datei zurück, die somit gespeichert oder verwendet werden kann.

store verwendet die in config/filesystem.php konfigurierte Standardfestplatte, Sie können jedoch auch spontan eine andere Festplatte angeben:

$path = $request->file('avatar')
    ->store("avatars/{$request->user()->id}", 's3');
Nach dem Login kopieren

Laden Sie die Datei über die Speicherfassade hoch

Das gleiche Ergebnis kann direkt mit der Speicherfassade erzielt werden:

$path = Storage::disk('s3')
    ->putFile("avatars/{$request->user()->id}", $request->file('avatar'));
Nach dem Login kopieren

Ich persönlich bevorzuge die Verwendung der Speicherfassade, weil sie die Aussage deutlicher macht.

Für weitere technische Artikel können Sie mir auf Linkedin oder X folgen.

Überwachen Sie Ihre Laravel-Anwendung kostenlos

Inspector ist ein Tool zur Codeausführungsüberwachung, das speziell für Softwareentwickler entwickelt wurde. Sie müssen nichts auf Serverebene installieren, installieren Sie einfach das Laravel-Paket und schon kann es losgehen.

Wenn Sie nach HTTP-Überwachung, Einblicken in Datenbankabfragen und der Möglichkeit suchen, Warnungen und Benachrichtigungen an Ihre bevorzugte Messaging-Umgebung weiterzuleiten, testen Sie Inspector kostenlos. Registrieren Sie Ihr Konto.

Oder erfahren Sie mehr auf der Website: https://inspector.dev

Upload File in Laravel

Das obige ist der detaillierte Inhalt vonDatei in Laravel hochladen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage