{"id":27203,"date":"2021-05-05T15:56:00","date_gmt":"2021-05-05T12:56:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27203"},"modified":"2021-10-17T17:30:22","modified_gmt":"2021-10-17T14:30:22","slug":"como-subir-imagenes-a-otro-servidor-a-traves-de-ftp-en-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-subir-imagenes-a-otro-servidor-a-traves-de-ftp-en-laravel\/","title":{"rendered":"C\u00f3mo subir im\u00e1genes a otro servidor a trav\u00e9s de FTP en Laravel"},"content":{"rendered":"<p>\u00bfQuieres subir tus archivos desde tu aplicaci\u00f3n Laravel a otro servidor a trav\u00e9s de FTP? Laravel viene con soporte incorporado para cargar archivos en un servidor externo o en la nube. En esta gu\u00eda, le mostramos c\u00f3mo cargar archivos (im\u00e1genes) a otro servidor a trav\u00e9s de FTP en el sitio web de Laravel.<\/p>\n<p>Alojar im\u00e1genes en otro servidor puede ayudar a mejorar la velocidad de su sitio. Esta t\u00e9cnica es una especie de conexi\u00f3n paralela entre un navegador web y los servidores. Reduce la carga de un servidor, ya que el navegador de im\u00e1genes dar\u00e1 una llamada a otro servidor.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/5.6\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> proporciona una forma conveniente de administrar nuestros archivos en la nube o en un servidor externo. El usuario puede elegir diferentes proveedores de almacenamiento de Laravel como S3, Rackspace, FTP o SFTP. Echemos un vistazo a la carga de archivos Laravel usando el controlador FTP.<\/p>\n<h3>Cargar archivos a otro servidor a trav\u00e9s del controlador FTP<\/h3>\n<p>Para comenzar, debe conocer los detalles de su servidor FTP, nombre de usuario FTP y contrase\u00f1a FTP. Una vez que est\u00e9 listo con los detalles, abra los <code>.env<\/code>archivos y agregue los detalles como se muestra a continuaci\u00f3n:<\/p>\n<pre><code>FTP_HOST=YOUR_FTP_HOST_VALUE\nFTP_USERNAME=YOUR_FTP_USERNAME_VALUE\nFTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE<\/code><\/pre>\n<p>Aseg\u00farese de reemplazar los marcadores de posici\u00f3n con los valores reales. A continuaci\u00f3n, abra el <code>config\/filesystems.php<\/code>archivo y agregue la configuraci\u00f3n &#8216;ftp&#8217; a la matriz de &#8216;discos&#8217;.<\/p>\n<p><strong>config \/ filesystems.php<\/strong><\/p>\n<pre><code>&lt;?php\nreturn [\n\u00a0\u00a0\u00a0\u00a0......\n\u00a0\u00a0\u00a0\u00a0'disks' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0......\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ftp' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'ftp',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; env('FTP_HOST'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; env('FTP_USERNAME'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; env('FTP_PASSWORD'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'root' =&gt; 'DIR_PATH_TO_WHERE_IMAGE_STORE' \/\/ for example: \/var\/www\/html\/dev\/images\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\n];<\/code><\/pre>\n<p>Reemplace DIR_PATH_TO_WHERE_IMAGE_STORE con la ruta real donde necesita almacenar im\u00e1genes. Por ejemplo, si tenemos una carpeta llamada &#8216;im\u00e1genes&#8217; y la ruta a esta carpeta es \/ var \/ www \/ html \/ dev \/ images, esta ruta ser\u00e1 el valor de &#8216;ra\u00edz&#8217; en la matriz anterior.<\/p>\n<p>Para subir archivos a trav\u00e9s de FTP, necesitamos un formulario donde un usuario puede enviar la imagen. Agregue el siguiente c\u00f3digo en su archivo de vista.<\/p>\n<pre><code>&lt;form action=\"{{ url('PASS_ACTION_URL_HERE') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image\" id=\"exampleInputFile\" multiple \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Debe reemplazar el PASS_ACTION_URL_HERE con su ruta real. Como estamos usando un Laravel Storage para cargar archivos, el usuario necesita agregar Facade al archivo del controlador de la siguiente manera:<\/p>\n<pre><code>use IlluminateSupportFacadesStorage;<\/code><\/pre>\n<p>Finalmente, el c\u00f3digo de funci\u00f3n de su controlador ser\u00eda el siguiente:<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.uniqid().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File to external server\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::disk('ftp')-&gt;put($filenametostore, fopen($request-&gt;file('profile_image'), 'r+'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Store $filenametostore in the database\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0return redirect('images')-&gt;with('status', \"Image uploaded successfully.\");\n}<\/code><\/pre>\n<p>&#8216;profile_image&#8217; es el nombre de nuestra entrada de archivo. Creamos el nombre \u00fanico de nuestro archivo y luego lo subimos a un servidor externo. Observe que hemos utilizado el m\u00e9todo Storage :: disk (&#8216;ftp&#8217;). Esta funci\u00f3n almacenar\u00eda nuestro archivo en la ruta definida en la configuraci\u00f3n. Un usuario debe almacenar el valor &#8216;$ filenametostore&#8217; en su base de datos.<\/p>\n<h3>Recuperar o eliminar una imagen<\/h3>\n<p>Estamos tratando con las im\u00e1genes tan obviamente, necesitamos mostrar estas im\u00e1genes en el sitio web. Como estamos almacenando estas im\u00e1genes en el servidor externo conocido, el usuario debe conocer la ruta HTTP de la carpeta donde almacenamos las im\u00e1genes. Puede ser algo como YOUR_DOMAIN_URL \/ images \/. En el m\u00e9todo del controlador, debemos almacenar el nombre de la imagen en la base de datos. Entonces, nuestra etiqueta HTML img ser\u00e1 la siguiente:<\/p>\n<pre><code>&lt;img src=\"YOUR_DOMAIN_URL\/images\/FILE_NAME\" \/&gt;<\/code><\/pre>\n<p>Aqu\u00ed FILE_NAME es el nombre de su imagen almacenado en la base de datos. El usuario puede eliminar el archivo de la siguiente manera:<\/p>\n<pre><code>Storage::disk('ftp')-&gt;delete('FILE_NAME');<\/code><\/pre>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-un-archivo-a-s3-usando-el-sistema-de-archivos-laravel\/\" title=\"C\u00f3mo cargar un archivo a S3 usando el sistema de archivos Laravel\">C\u00f3mo cargar un archivo a S3 usando el sistema de archivos 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, estudiamos c\u00f3mo subir la imagen a otro servidor a trav\u00e9s de FTP en Laravel. Alojar im\u00e1genes en un servidor externo puede reducir el ancho de banda en un servidor y ayudar a mejorar la velocidad del sitio.<\/p>\n","protected":false},"author":1,"featured_media":21643,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[495],"tags":[849],"class_list":["post-27203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27203","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=27203"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/27203\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=27203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=27203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=27203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}