Come trasferire file su server remoto in PHP
La memorizzazione di file o immagini su un server esterno è un comportamento comune al giorno d’oggi. Le persone usano l’archiviazione cloud come AWS, Azure, Google Cloud, Backblaze o il proprio server remoto per archiviare i file. In tale scenario, l’utente archivia i file su un altro server e lo chiama tramite il collegamento sul proprio server delle applicazioni. Il vantaggio di fare ciò è risparmiare larghezza di banda su un server, il che si traduce in migliori prestazioni del server.
In passato, mentre lavoravamo al progetto di un cliente, seguivamo questa tecnica per memorizzare le immagini su un server remoto. Quello che il cliente voleva era inviare immagini al proprio server esterno e chiamarlo da un’applicazione ovunque fosse necessario. In tal caso, era necessario archiviare il percorso dell’immagine remota nel database dopo averlo caricato su un server remoto.
In questo articolo, ti mostreremo come trasferire file su un server remoto in PHP tramite FTP. Per il bene di questo tutorial, usiamo le immagini per il caricamento. L’utente può scegliere qualsiasi tipo di file in base alle proprie esigenze.
Iniziare
Per procedere ulteriormente, dovresti avere le credenziali FTP del tuo server. Un altro requisito è il compositore. Assicurati di aver installato Composer sul tuo sistema. Utilizzerai il pacchetto chiamato Flysystem che richiede Composer per l’installazione.
Apri il terminale nella directory principale del tuo progetto ed esegui il comando seguente.
composer require league/flysystem
Dopo l’installazione, crea un modulo HTML con l’input del file e il pulsante di invio. Questo modulo utilizzerà per sfogliare l’immagine e inviarla al server.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Trasferisci file su server remoto
Hai installato la libreria Flysystem e hai anche creato un modulo HTML. La prossima cosa da fare è prendere l’immagine dall’input del file e inviarla a un server remoto. Il tuo upload.php
conterrà il codice sottostante.
<?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();
}
}
}
Sostituisci i segnaposto con i valori effettivi. Qui stiamo memorizzando le immagini all’interno della public_html/images
directory. Puoi modificare questo percorso in base alle tue esigenze. Nel codice sopra, Flysystem si connette al tuo server tramite FTP, legge il contenuto dell’immagine e mette l’immagine nel percorso specificato.
Ci auguriamo che tu sappia come trasferire file sul server remoto in PHP. Utilizzando Flysystem, puoi anche trasferire file su AWS S3, Azure, Dropbox, ecc. Puoi saperne di più su questo pacchetto nella loro documentazione ufficiale.
articoli Correlati
- Come caricare immagini su un altro server tramite FTP in Laravel
- Carica file su Amazon S3 utilizzando AWS PHP SDK