Comment transférer des fichiers vers un serveur distant en PHP
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.php
contiendra 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/images
ré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
- Comment télécharger des images sur un autre serveur via FTP dans Laravel
- Charger des fichiers sur Amazon S3 à l’aide d’AWS PHP SDK