Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment transférer des fichiers vers un serveur distant en PHP

412

Stocker des fichiers ou des images sur un serveur externe est un comportement courant de nos jours. Les gens utilisent un stockage cloud comme AWS, Azure, Google Cloud, Backblaze ou leur propre serveur distant pour stocker les fichiers. Dans ce scénario, l’utilisateur stocke les fichiers sur un autre serveur et l’appelle via le lien sur son serveur d’applications. L’avantage de cela est qu’il économise de la bande passante sur un serveur, ce qui se traduit par de meilleures performances du serveur.

Dans le passé, en travaillant sur le projet d’un client, nous utilisions cette technique pour stocker des images sur un serveur distant. Ce que le client voulait, c’était envoyer des images à son propre serveur externe et l’appeler à partir d’une application là où c’était nécessaire. Dans ce cas, nous devions stocker le chemin de l’image distante dans la base de données après l’avoir téléchargé sur un serveur distant.

Dans cet article, nous allons vous montrer comment transférer des fichiers vers un serveur distant en PHP via FTP. Pour les besoins de ce tutoriel, nous utilisons des images pour le téléchargement. L’utilisateur peut choisir n’importe quel type de fichier selon ses besoins.

Commencer

Pour aller plus loin, vous devez disposer des identifiants FTP de votre serveur. Une autre exigence est le compositeur. Assurez-vous d’avoir installé Composer sur votre système. Vous allez utiliser un package appelé Flysystem qui nécessite Composer pour l’installation.

Ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande ci-dessous.

composer require league/flysystem

Lors de l’installation, créez un formulaire HTML avec une entrée de fichier et un bouton d’envoi. Ce formulaire sera utilisé pour parcourir l’image et l’envoyer au serveur.

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="image" /><br>
    <input type="submit" name="submit" value="Submit">
</form>

Transférer des fichiers vers un serveur distant

Vous avez installé la bibliothèque Flysystem et également créé un formulaire HTML. La prochaine chose à faire est de prendre l’image du fichier d’entrée et de l’envoyer à un serveur distant. Votre upload.phpcontiendra le code ci-dessous.

<?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();
        }
    }
}

Remplacez les espaces réservés par les valeurs réelles. Ici, nous stockons les images dans le public_html/imagesrépertoire. Vous pouvez ajuster ce chemin selon vos besoins. Dans le code ci-dessus, Flysystem se connecte à votre serveur via FTP, lit le contenu de l’image et place l’image sur le chemin spécifié.

Nous espérons que vous avez appris comment transférer des fichiers vers le serveur distant en PHP. En utilisant Flysystem, vous pouvez également transférer des fichiers sur AWS S3, Azure, Dropbox, etc. Vous pouvez en savoir plus sur ce package sur leur documentation officielle.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails