{"id":28642,"date":"2021-06-15T14:30:00","date_gmt":"2021-06-15T11:30:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28642"},"modified":"2021-10-18T03:59:36","modified_gmt":"2021-10-18T00:59:36","slug":"carregar-imagem-usando-a-biblioteca-a-prova-de-balas-em-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/carregar-imagem-usando-a-biblioteca-a-prova-de-balas-em-php\/","title":{"rendered":"Carregar imagem usando a biblioteca \u00e0 prova de balas em PHP"},"content":{"rendered":"<p>Carregar uma imagem no servidor \u00e9 uma tarefa comum para desenvolvedores. Algu\u00e9m pode ter feito essa tarefa centenas de vezes. Durante esse processo de upload, os desenvolvedores devem cuidar do seguinte.<\/p>\n<ul>\n<li>Verifique se o arquivo enviado \u00e9 uma imagem<\/li>\n<li>Crie um diret\u00f3rio onde as imagens ir\u00e3o armazenar<\/li>\n<li>Gere um nome exclusivo para cada imagem, de modo que n\u00e3o substitua o existente com o mesmo nome.<\/li>\n<li>Opcionalmente, adicione valida\u00e7\u00e3o para a dimens\u00e3o de uma imagem. Se uma imagem enviada tiver uma dimens\u00e3o maior do que a especificada, emita um erro.<\/li>\n<\/ul>\n<p>Estas s\u00e3o as verifica\u00e7\u00f5es recomendadas que um desenvolvedor deve seguir ao escrever o c\u00f3digo. Pode-se escrever condi\u00e7\u00f5es para todas essas etapas do c\u00f3digo. Mas vai dar um pouco de trabalho e o c\u00f3digo se torna extenso.<\/p>\n<p>Vou recomendar o uso da biblioteca <a href=\"https:\/\/github.com\/samayo\/bulletproof\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 prova de balas<\/a>, que trata de todas essas etapas para voc\u00ea nos bastidores. Isso economiza o tempo de adicionar l\u00f3gica para cada etapa e reduzir o n\u00famero de linhas de seu c\u00f3digo.<\/p>\n<p>Bulletproof \u00e9 um uploader de imagens seguro em PHP, com uma boa API. Experimentamos esta biblioteca em nosso projeto e estamos muito felizes com o resultado final. \u00c9 por isso que decidi compartilhar uma palavra sobre esta biblioteca com nossos leitores.<\/p>\n<p>A biblioteca \u00e0 prova de balas possui os seguintes recursos em seu n\u00facleo, o que a torna mais segura.<\/p>\n<ul>\n<li>Usa exif_imagetype() para obter a verdadeira imagem m\u00edmica (.extension)<\/li>\n<li>Usa getimagesize () para verificar se a imagem tem uma altura \/ largura v\u00e1lida em pixels.<\/li>\n<li>Nomes de imagens higienizadas, permiss\u00f5es restritas de pasta e muito mais &#8230;<\/li>\n<\/ul>\n<p>Dito isso, vamos dar uma olhada em como fazer upload de imagens em PHP usando a biblioteca Bulletproof.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para come\u00e7ar a usar a biblioteca \u00e0 prova de balas, instale-a usando o comando Composer abaixo. Certifique-se de ter o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> instalado no sistema.<\/p>\n<pre><code>composer require samayo\/bulletproof:4.0.*<\/code><\/pre>\n<p>Em seguida, crie um formul\u00e1rio HTML simples com entrada de arquivo e bot\u00e3o de envio.<\/p>\n<pre><code>&lt;form method=\"POST\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"image\" accept=\"image\/*\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Carregar imagem usando a biblioteca \u00e0 prova de balas<\/h3>\n<p>Estamos configurados com uma biblioteca e um formul\u00e1rio HTML. Agora, vamos adicionar um c\u00f3digo fornecido pela biblioteca que carrega uma imagem no servidor.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$file = new BulletproofImage($_FILES);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$file-&gt;setLocation('uploads');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($file[\"image\"]) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = $file-&gt;upload();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($upload) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $upload-&gt;getFullPath();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $file-&gt;getError();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Voc\u00ea terminou. V\u00e1 em frente e teste. Voc\u00ea ver\u00e1 suas imagens armazenadas na pasta &#8216;uploads&#8217; com um nome exclusivo. O usu\u00e1rio pode alterar este local com outra coisa.<\/p>\n<p>Se voc\u00ea tentar fazer upload de arquivos que n\u00e3o sejam imagens, receber\u00e1 um erro. Por precau\u00e7\u00e3o, se voc\u00ea deseja definir a dimens\u00e3o tamb\u00e9m, adicione a instru\u00e7\u00e3o abaixo no c\u00f3digo acima.<\/p>\n<pre><code>$file-&gt;setDimension(600, 400);<\/code><\/pre>\n<p>Aqui, &#8216;600&#8217; \u00e9 a largura da imagem e &#8216;400&#8217; \u00e9 a altura de uma imagem. Ajuste os valores de acordo com seus requisitos.<\/p>\n<h3>Carregar v\u00e1rias imagens usando a biblioteca \u00e0 prova de balas<\/h3>\n<p>Voc\u00ea pode querer fazer upload de v\u00e1rias imagens em um servidor usando esta biblioteca. Requer um pouco de mudan\u00e7a no c\u00f3digo acima. Voc\u00ea precisa adicionar um atributo &#8216;m\u00faltiplo&#8217; \u00e0 entrada do arquivo. Al\u00e9m disso, use o formato de matriz para o nome do arquivo de entrada. Depois disso, faremos um loop por cada imagem e faremos o upload para o servidor da seguinte maneira.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0for($i = 0; $i &lt; count($_FILES['image']['name']); $i++) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_file = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\" =&gt; $_FILES['image']['name'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\" =&gt; $_FILES['image']['type'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"tmp_name\" =&gt; $_FILES['image']['tmp_name'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"error\" =&gt; $_FILES['image']['error'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"size\" =&gt; $_FILES['image']['size'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file = new BulletproofImage($arr_file);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file-&gt;setLocation('uploads');\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = $file-&gt;upload();\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;\n&lt;form method=\"POST\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"image[]\" accept=\"image\/*\" multiple required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>\u00c9 isso! Espero que voc\u00ea saiba como fazer o upload de uma imagem por meio da biblioteca \u00e0 prova de balas. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-upload-e-compactar-imagens-no-laravel\/\" title=\"Um Guia para Upload e Compacta\u00e7\u00e3o de Imagens no Laravel\">Um Guia para Upload e Compacta\u00e7\u00e3o de Imagens no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-otimizar-a-imagem-ao-fazer-upload-em-php\/\" title=\"Como otimizar a imagem no upload em PHP\">Como otimizar a imagem no upload em PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/redimensionar-imagem-em-php-usando-tinypng\/\" title=\"Redimensionar imagem em PHP usando TinyPNG\">Redimensionar imagem em PHP usando TinyPNG<\/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>Bulletproof \u00e9 uma biblioteca usada para fazer upload de imagens em PHP com seguran\u00e7a. Neste artigo, estudamos como instalar e usar esta biblioteca em nosso aplicativo<\/p>\n","protected":false},"author":1,"featured_media":21621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[278],"tags":[848],"class_list":["post-28642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28642","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=28642"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}