✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So laden Sie Bilder über FTP in Laravel auf einen anderen Server hoch

34

Möchten Sie Ihre Dateien von Ihrer Laravel-Anwendung über FTP auf einen anderen Server hochladen? Laravel verfügt über die integrierte Unterstützung für das Hochladen von Dateien auf einen externen Server oder in die Cloud. In diesem Handbuch zeigen wir Ihnen, wie Sie Dateien (Bilder) über FTP auf der Laravel-Website auf einen anderen Server hochladen.

Das Hosten von Bildern auf einem anderen Server kann dazu beitragen, die Geschwindigkeit Ihrer Website zu verbessern. Diese Technik ist eine Art parallele Verbindung zwischen einem Webbrowser und den Servern. Es reduziert die Last von einem Server, da der Browser für Bilder einen anderen Server aufruft.

Laravel Filesystem bietet eine bequeme Möglichkeit, unsere Dateien in der Cloud oder auf einem externen Server zu verwalten. Der Benutzer kann verschiedene Laravel-Speicheranbieter wie S3, Rackspace, FTP oder SFTP auswählen. Werfen wir einen Blick auf das Hochladen von Laravel-Dateien mit dem FTP-Treiber.

Hochladen von Dateien auf einen anderen Server über den FTP-Treiber

Um zu beginnen, sollten Sie die Details Ihres FTP-Hosts, FTP-Benutzernamens und FTP-Passworts kennen. Sobald Sie mit den Details fertig sind, öffnen Sie die .envDateien und fügen Sie die Details wie folgt hinzu:

FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE

Stellen Sie sicher, dass Sie die Platzhalter durch die tatsächlichen Werte ersetzen. Als nächstes öffnen Sie die config/filesystems.phpDatei und fügen die ‘ftp’-Konfiguration zum ‘disks’-Array hinzu.

config/filesystems.php

<?php
return [
    ......
    'disks' => [
        ......
        'ftp' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST'),
            'username' => env('FTP_USERNAME'),
            'password' => env('FTP_PASSWORD'),
            'root' => 'DIR_PATH_TO_WHERE_IMAGE_STORE' // for example: /var/www/html/dev/images
        ],
    ],
     
];

Ersetzen Sie DIR_PATH_TO_WHERE_IMAGE_STORE durch den tatsächlichen Pfad, in dem Sie Bilder speichern müssen. Wenn wir beispielsweise einen Ordner namens ‘images’ haben und der Pfad zu diesem Ordner /var/www/html/dev/images ist, wird dieser Pfad als Wert für ‘root’ im obigen Array verwendet.

Für das Hochladen von Dateien über FTP benötigen wir ein Formular, in dem ein Benutzer das Bild einreichen kann. Fügen Sie den folgenden Code in Ihre Ansichtsdatei ein.

<form action="{{ url('PASS_ACTION_URL_HERE') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image" id="exampleInputFile" multiple />
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

Sie sollten die PASS_ACTION_URL_HERE durch Ihre tatsächliche Route ersetzen. Da wir einen Laravel-Speicher zum Hochladen von Dateien verwenden, muss der Benutzer Facade wie folgt zur Controller-Datei hinzufügen:

use IlluminateSupportFacadesStorage;

Schließlich wäre Ihr Controller-Funktionscode wie folgt:

public function store(Request $request)
{
    if($request->hasFile('profile_image')) {
         
        //get filename with extension
        $filenamewithextension = $request->file('profile_image')->getClientOriginalName();
 
        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
        //get file extension
        $extension = $request->file('profile_image')->getClientOriginalExtension();
 
        //filename to store
        $filenametostore = $filename.'_'.uniqid().'.'.$extension;
 
        //Upload File to external server
        Storage::disk('ftp')->put($filenametostore, fopen($request->file('profile_image'), 'r+'));
 
        //Store $filenametostore in the database
    }
 
    return redirect('images')->with('status', "Image uploaded successfully.");
}

‘profile_image’ ist der Name unserer Dateieingabe. Wir erstellen den eindeutigen Namen unserer Datei und laden sie dann auf einen externen Server hoch. Beachten Sie, dass wir die Methode Storage::disk(‘ftp’) verwendet haben. Diese Funktion würde unsere Datei in dem in der Konfiguration definierten Pfad speichern. Ein Benutzer sollte den Wert ‘$filenametostore’ in Ihrer Datenbank speichern.

Bild abrufen oder löschen

Wir haben es so offensichtlich mit den Bildern zu tun, dass wir diese Bilder auf der Website anzeigen müssen. Da wir diese Bilder auf dem bekannten externen Server speichern, sollte ein Benutzer den HTTP-Pfad des Ordners kennen, in dem wir die Bilder speichern. Es kann so etwas wie YOUR_DOMAIN_URL/images/ sein. In der Controller-Methode sollten wir den Namen des Bildes in der Datenbank speichern. Unser HTML-img-Tag sieht also wie folgt aus:

<img src="YOUR_DOMAIN_URL/images/FILE_NAME" />

Hier ist FILE_NAME der Name Ihres Bildes, der in der Datenbank gespeichert ist. Der Benutzer kann die Datei wie folgt löschen:

Storage::disk('ftp')->delete('FILE_NAME');

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen