{"id":27812,"date":"2021-05-15T11:54:00","date_gmt":"2021-05-15T08:54:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27812"},"modified":"2021-10-17T17:07:36","modified_gmt":"2021-10-17T14:07:36","slug":"como-transferir-archivos-a-un-servidor-remoto-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-transferir-archivos-a-un-servidor-remoto-en-php\/","title":{"rendered":"C\u00f3mo transferir archivos a un servidor remoto en PHP"},"content":{"rendered":"<p>El almacenamiento de archivos o im\u00e1genes en un servidor externo es un comportamiento com\u00fan 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\u00e9s 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.<\/p>\n<p>En el pasado, mientras trabaj\u00e1bamos en el proyecto de un cliente, segu\u00edamos esta t\u00e9cnica para almacenar im\u00e1genes en un servidor remoto. Lo que el cliente quer\u00eda era enviar im\u00e1genes a su propio servidor externo y llamarlo desde una aplicaci\u00f3n donde fuera necesario. En ese caso, necesit\u00e1bamos almacenar la ruta de la imagen remota en la base de datos despu\u00e9s de cargarla en un servidor remoto.<\/p>\n<p>En este art\u00edculo, le mostraremos c\u00f3mo transferir archivos a un servidor remoto en PHP a trav\u00e9s de FTP. Por el bien de este tutorial, usamos im\u00e1genes para cargar. El usuario puede elegir cualquier tipo de archivo seg\u00fan sus necesidades.<\/p>\n<h3>Empezando<\/h3>\n<p>Para continuar, debe tener las credenciales FTP de su servidor. Otro requisito es el Compositor. Aseg\u00farese de haber instalado <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> en su sistema. Va a utilizar un paquete llamado <a href=\"https:\/\/github.com\/thephpleague\/flysystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Flysystem<\/a> que requiere Composer para su instalaci\u00f3n.<\/p>\n<p>Abra la terminal en el directorio ra\u00edz de su proyecto y ejecute el siguiente comando.<\/p>\n<pre><code>composer require league\/flysystem<\/code><\/pre>\n<p>Tras la instalaci\u00f3n, cree un formulario HTML con entrada de archivo y bot\u00f3n de env\u00edo. Este formulario se utilizar\u00e1 para navegar por la imagen y enviarla al servidor.<\/p>\n<pre><code>&lt;form method=\"post\" action=\"upload.php\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"image\" \/&gt;&lt;br&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Transferir archivos al servidor remoto<\/h3>\n<p>Ha instalado la biblioteca Flysystem y tambi\u00e9n 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 <code>upload.php<\/code>contendr\u00e1 el siguiente c\u00f3digo.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse LeagueFlysystemFilesystem;\nuse LeagueFlysystemAdapterFtp as Adapter;\n\u00a0\nif(isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if(isset($_FILES['image']['name']) &amp;&amp; !empty($_FILES['image']['name'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filesystem = new Filesystem(new Adapter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; 'HOST_NAME_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; 'USERNAME_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'PASSWORD_HERE',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$stream = fopen($_FILES['image']['tmp_name'], 'r+');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filesystem-&gt;putStream('public_html\/images\/'.$_FILES['image']['name'], $stream);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (is_resource($stream)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fclose($stream);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Image uploaded on external server successfully.\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Reemplace los marcadores de posici\u00f3n con los valores reales. Aqu\u00ed estamos almacenando im\u00e1genes dentro del <code>public_html\/images<\/code>directorio. Puede ajustar esta ruta seg\u00fan sus necesidades. En el c\u00f3digo anterior, Flysystem se conecta a su servidor a trav\u00e9s de FTP, lee el contenido de la imagen y coloca la imagen en la ruta especificada.<\/p>\n<p>Esperamos que sepa c\u00f3mo transferir archivos al servidor remoto en PHP. Con Flysystem, tambi\u00e9n puede transferir archivos en AWS S3, Azure, Dropbox, etc. Puede obtener m\u00e1s informaci\u00f3n sobre este paquete en su <a href=\"https:\/\/flysystem.thephpleague.com\/v1\/docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n oficial<\/a>.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-subir-imagenes-a-otro-servidor-a-traves-de-ftp-en-laravel\/\" title=\"C\u00f3mo subir im\u00e1genes a otro servidor a trav\u00e9s de FTP en Laravel\">C\u00f3mo subir im\u00e1genes a otro servidor a trav\u00e9s de FTP en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/cargar-archivos-en-amazon-s3-mediante-aws-php-sdk\/\" title=\"Cargar archivos en Amazon S3 mediante AWS PHP SDK\">Cargar archivos en Amazon S3 mediante AWS PHP SDK<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, le mostramos c\u00f3mo transferir archivos a un servidor remoto en PHP. Almacenar archivos en un servidor remoto y llamarlo desde el servidor de aplicaciones ahorra ancho de banda<\/p>\n","protected":false},"author":1,"featured_media":21909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-27812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=27812"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=27812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=27812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=27812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}