{"id":26989,"date":"2021-05-05T15:51:00","date_gmt":"2021-05-05T12:51:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26989"},"modified":"2021-10-18T04:16:53","modified_gmt":"2021-10-18T01:16:53","slug":"como-fazer-upload-de-imagens-para-outro-servidor-atraves-de-ftp-no-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-de-imagens-para-outro-servidor-atraves-de-ftp-no-laravel\/","title":{"rendered":"Como fazer upload de imagens para outro servidor atrav\u00e9s de FTP no Laravel"},"content":{"rendered":"<p>Voc\u00ea deseja enviar seus arquivos de seu aplicativo Laravel para outro servidor atrav\u00e9s de FTP? Laravel vem com suporte embutido para upload de arquivos para servidor externo ou nuvem. Neste guia, mostramos como fazer upload de arquivos (imagens) para outro servidor via FTP no site do Laravel.<\/p>\n<p>Hospedar imagens em outro servidor pode ajudar a melhorar a velocidade do seu site. Essa t\u00e9cnica \u00e9 uma esp\u00e9cie de conex\u00e3o paralela entre um navegador da web e os servidores. Ele reduz a carga de um servidor, pois o navegador de imagens far\u00e1 uma chamada para outro servidor.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/5.6\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">O Laravel Filesystem<\/a> fornece uma maneira conveniente de gerenciar nossos arquivos na nuvem ou em um servidor externo. O usu\u00e1rio pode escolher diferentes provedores de armazenamento Laravel como S3, Rackspace, FTP ou SFTP. Vamos dar uma olhada no upload de arquivos do Laravel usando o driver FTP.<\/p>\n<h3>Carregar arquivos para outro servidor atrav\u00e9s do driver FTP<\/h3>\n<p>Para come\u00e7ar, voc\u00ea deve saber os detalhes de seu host FTP, nome de usu\u00e1rio e senha FTP. Assim que estiver pronto com os detalhes, abra os <code>.env<\/code>arquivos e adicione os detalhes conforme abaixo:<\/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>Certifique-se de substituir os marcadores de posi\u00e7\u00e3o pelos valores reais. Em seguida, abra o <code>config\/filesystems.php<\/code>arquivo e adicione a configura\u00e7\u00e3o &#8216;ftp&#8217; ao array &#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>Substitua DIR_PATH_TO_WHERE_IMAGE_STORE pelo caminho real onde voc\u00ea precisa armazenar as imagens. Por exemplo, se tivermos uma pasta chamada &#8216;imagens&#8217; e o caminho para essa pasta for \/ var \/ www \/ html \/ dev \/ images, esse caminho ser\u00e1 o valor para &#8216;root&#8217; no array acima.<\/p>\n<p>Para enviar arquivos por FTP, precisamos de um formul\u00e1rio onde o usu\u00e1rio pode enviar a imagem. Adicione o c\u00f3digo abaixo em seu arquivo de visualiza\u00e7\u00e3o.<\/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>Voc\u00ea deve substituir PASS_ACTION_URL_HERE por sua rota real. Como estamos usando um armazenamento Laravel para fazer upload de arquivos, o usu\u00e1rio precisa adicionar o Facade ao arquivo do controlador da seguinte forma:<\/p>\n<pre><code>use IlluminateSupportFacadesStorage;<\/code><\/pre>\n<p>Finalmente, seu c\u00f3digo de fun\u00e7\u00e3o do controlador seria o seguinte:<\/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; \u00e9 o nome do nosso arquivo de entrada. N\u00f3s constru\u00edmos o nome exclusivo de nosso arquivo e o carregamos em um servidor externo. Observe que usamos o m\u00e9todo Storage :: disk (&#8216;ftp&#8217;). Esta fun\u00e7\u00e3o armazenaria nosso arquivo no caminho definido na configura\u00e7\u00e3o. Um usu\u00e1rio deve armazenar o valor &#8216;$ filenametostore&#8217; em seu banco de dados.<\/p>\n<h3>Recuperar ou excluir imagem<\/h3>\n<p>Estamos lidando com as imagens t\u00e3o obviamente, precisamos exibi-las no site. Como estamos armazenando essas imagens no servidor externo conhecido, o usu\u00e1rio deve saber o caminho HTTP da pasta onde armazenamos as imagens. Pode ser algo como YOUR_DOMAIN_URL \/ images \/. No m\u00e9todo do controlador, devemos armazenar o nome da imagem no banco de dados. Portanto, nossa tag HTML img ser\u00e1 da seguinte maneira:<\/p>\n<pre><code>&lt;img src=\"YOUR_DOMAIN_URL\/images\/FILE_NAME\" \/&gt;<\/code><\/pre>\n<p>Aqui FILE_NAME \u00e9 o nome da sua imagem armazenada no banco de dados. O usu\u00e1rio pode excluir o arquivo da seguinte maneira:<\/p>\n<pre><code>Storage::disk('ftp')-&gt;delete('FILE_NAME');<\/code><\/pre>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-de-arquivo-para-s3-usando-o-sistema-de-arquivos-laravel\/\" title=\"Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel\">Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/carregar-arquivos-para-o-amazon-s3-usando-aws-php-sdk\/\" title=\"Carregar arquivos para Amazon S3 usando AWS PHP SDK\">Carregar arquivos para Amazon S3 usando AWS PHP SDK<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos como fazer o upload da imagem para outro servidor via FTP no Laravel. Hospedar imagens em um servidor externo pode reduzir a largura de banda em um servidor e ajudar a melhorar a velocidade do site.<\/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":[502],"tags":[848],"class_list":["post-26989","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/26989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=26989"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/26989\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=26989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=26989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=26989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}