Cómo transferir archivos a un servidor remoto en PHP
El almacenamiento de archivos o imágenes en un servidor externo es un comportamiento común en la actualidad. Las personas usan el almacenamiento en la nube como AWS, Azure, Google Cloud, Backblaze o su propio servidor remoto para almacenar los archivos. En ese escenario, el usuario almacena archivos en otro servidor y lo llama a través del enlace en su servidor de aplicaciones. El beneficio de hacer esto es que ahorra ancho de banda en un servidor, lo que resulta en un mejor rendimiento del servidor.
En el pasado, mientras trabajábamos en el proyecto de un cliente, seguíamos esta técnica para almacenar imágenes en un servidor remoto. Lo que el cliente quería era enviar imágenes a su propio servidor externo y llamarlo desde una aplicación donde fuera necesario. En ese caso, necesitábamos almacenar la ruta de la imagen remota en la base de datos después de cargarla en un servidor remoto.
En este artículo, le mostraremos cómo transferir archivos a un servidor remoto en PHP a través de FTP. Por el bien de este tutorial, usamos imágenes para cargar. El usuario puede elegir cualquier tipo de archivo según sus necesidades.
Empezando
Para continuar, debe tener las credenciales FTP de su servidor. Otro requisito es el Compositor. Asegúrese de haber instalado Composer en su sistema. Va a utilizar un paquete llamado Flysystem que requiere Composer para su instalación.
Abra la terminal en el directorio raíz de su proyecto y ejecute el siguiente comando.
composer require league/flysystem
Tras la instalación, cree un formulario HTML con entrada de archivo y botón de envío. Este formulario se utilizará para navegar por la imagen y enviarla al servidor.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Transferir archivos al servidor remoto
Ha instalado la biblioteca Flysystem y también ha creado un formulario HTML. Lo siguiente que debe hacer es tomar la imagen de la entrada del archivo y enviarla a un servidor remoto. Tu upload.php
contendrá el siguiente código.
<?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();
}
}
}
Reemplace los marcadores de posición con los valores reales. Aquí estamos almacenando imágenes dentro del public_html/images
directorio. Puede ajustar esta ruta según sus necesidades. En el código anterior, Flysystem se conecta a su servidor a través de FTP, lee el contenido de la imagen y coloca la imagen en la ruta especificada.
Esperamos que sepa cómo transferir archivos al servidor remoto en PHP. Con Flysystem, también puede transferir archivos en AWS S3, Azure, Dropbox, etc. Puede obtener más información sobre este paquete en su documentación oficial.
Artículos relacionados
- Cómo subir imágenes a otro servidor a través de FTP en Laravel
- Cargar archivos en Amazon S3 mediante AWS PHP SDK