So übertragen Sie Dateien in PHP auf einen Remote-Server
Das Speichern von Dateien oder Bildern auf einem externen Server ist heutzutage ein gängiges Verhalten. Die Leute verwenden Cloud-Speicher wie AWS, Azure, Google Cloud, Backblaze oder ihren eigenen Remote-Server, um die Dateien zu speichern. In diesem Szenario speichert der Benutzer Dateien auf einem anderen Server und ruft sie über den Link auf seinem Anwendungsserver auf. Dies hat den Vorteil, dass Bandbreite auf einem Server gespart wird, was zu einer besseren Serverleistung führt.
In der Vergangenheit haben wir bei der Arbeit an einem Kundenprojekt diese Technik zum Speichern von Bildern auf einem Remote-Server angewendet. Was der Kunde wollte, war, Bilder an seinen eigenen externen Server zu senden und ihn bei Bedarf von einer Anwendung aus aufzurufen. In diesem Fall mussten wir den Remote-Image-Pfad in der Datenbank speichern, nachdem wir ihn auf einen Remote-Server hochgeladen haben.
In diesem Artikel zeigen wir Ihnen, wie Sie Dateien per FTP auf einen Remote-Server in PHP übertragen. Für dieses Tutorial verwenden wir Bilder zum Hochladen. Der Benutzer kann jede Art von Datei nach seinen Anforderungen auswählen.
Einstieg
Um fortzufahren, sollten Sie die FTP-Zugangsdaten Ihres Servers haben. Eine weitere Voraussetzung ist der Composer. Stellen Sie sicher, dass Sie Composer auf Ihrem System installiert haben. Sie werden ein Paket namens Flysystem verwenden, das Composer für die Installation benötigt.
Öffnen Sie das Terminal in Ihrem Projektstammverzeichnis und führen Sie den folgenden Befehl aus.
composer require league/flysystem
Erstellen Sie nach der Installation ein HTML-Formular mit Dateieingabe und Senden-Schaltfläche. Dieses Formular wird verwendet, um das Bild zu durchsuchen und an den Server zu senden.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Dateien auf Remote-Server übertragen
Sie haben die Flysystem-Bibliothek installiert und auch ein HTML-Formular erstellt. Als nächstes müssen Sie das Bild aus der Dateieingabe nehmen und an einen Remote-Server senden. Ihr upload.php
wird den folgenden Code enthalten.
<?php
require_once "vendor/autoload.php";
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterFtp as Adapter;
if(isset($_POST['submit'])) {
if(isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
try {
$filesystem = new Filesystem(new Adapter([
'host' => 'HOST_NAME_HERE',
'username' => 'USERNAME_HERE',
'password' => 'PASSWORD_HERE',
]));
$stream = fopen($_FILES['image']['tmp_name'], 'r+');
$filesystem->putStream('public_html/images/'.$_FILES['image']['name'], $stream);
if (is_resource($stream)) {
fclose($stream);
}
echo "Image uploaded on external server successfully.";
} catch(Exception $e) {
echo $e->getMessage();
}
}
}
Ersetzen Sie die Platzhalter durch die tatsächlichen Werte. Hier speichern wir Bilder im public_html/images
Verzeichnis. Sie können diesen Pfad nach Ihren Wünschen anpassen. Im obigen Code verbindet sich Flysystem über FTP mit Ihrem Server, liest den Bildinhalt und legt das Bild auf den angegebenen Pfad.
Wir hoffen, dass Sie wissen, wie Sie Dateien in PHP auf den Remote-Server übertragen. Mit Flysystem können Sie auch Dateien auf AWS S3, Azure, Dropbox usw. übertragen. Weitere Informationen zu diesem Paket finden Sie in der offiziellen Dokumentation.
Zum Thema passende Artikel
- So laden Sie Bilder über FTP in Laravel auf einen anderen Server hoch
- Hochladen von Dateien in Amazon S3 mit AWS PHP SDK