{"id":29439,"date":"2021-06-15T14:09:00","date_gmt":"2021-06-15T11:09:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29439"},"modified":"2021-10-17T16:17:05","modified_gmt":"2021-10-17T13:17:05","slug":"cargar-imagen-usando-la-biblioteca-bulletproof-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/cargar-imagen-usando-la-biblioteca-bulletproof-en-php\/","title":{"rendered":"Cargar imagen usando la biblioteca Bulletproof en PHP"},"content":{"rendered":"<p>Cargar una imagen en el servidor es una tarea com\u00fan para los desarrolladores. Uno puede haber hecho esta tarea cientos de veces. Durante este proceso de carga, los desarrolladores deben ocuparse de lo siguiente.<\/p>\n<ul>\n<li>Comprueba si el archivo subido es una imagen.<\/li>\n<li>Crea un directorio donde se almacenar\u00e1n las im\u00e1genes<\/li>\n<li>Genere un nombre \u00fanico para cada imagen para que no reemplace la existente con el mismo nombre.<\/li>\n<li>Opcionalmente, agregue validaci\u00f3n para la dimensi\u00f3n de una imagen. Si una imagen cargada tiene una dimensi\u00f3n mayor que la especificada, arroja un error.<\/li>\n<\/ul>\n<p>Estas son las comprobaciones recomendadas que debe seguir un desarrollador al escribir c\u00f3digo. Se pueden escribir condiciones para todos estos pasos en el c\u00f3digo. Pero tomar\u00e1 algo de trabajo y el c\u00f3digo se vuelve largo.<\/p>\n<p>Recomendar\u00e9 usar la biblioteca <a href=\"https:\/\/github.com\/samayo\/bulletproof\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bulletproof<\/a> que maneja todos estos pasos debajo del cap\u00f3. Le ahorra el tiempo de agregar l\u00f3gica para cada paso y reducir el n\u00famero de l\u00edneas de su c\u00f3digo.<\/p>\n<p>Bulletproof es un cargador de im\u00e1genes seguro de PHP, con una buena API. Hemos probado esta biblioteca para nuestro proyecto y estamos bastante contentos con el resultado final. Por eso decid\u00ed compartir unas palabras sobre esta biblioteca con nuestros lectores.<\/p>\n<p>La biblioteca Bulletproof tiene las siguientes caracter\u00edsticas en su n\u00facleo que la hacen m\u00e1s segura.<\/p>\n<ul>\n<li>Utiliza exif_imagetype() para obtener el mimo de imagen real (.extension)<\/li>\n<li>Utiliza getimagesize () para comprobar si la imagen tiene un alto \/ ancho v\u00e1lido en p\u00edxeles.<\/li>\n<li>Nombres de im\u00e1genes desinfectados, permisos de carpeta estrictos y m\u00e1s &#8230;<\/li>\n<\/ul>\n<p>Dicho esto, echemos un vistazo a c\u00f3mo cargar im\u00e1genes en PHP usando la biblioteca Bulletproof.<\/p>\n<h3>Empezando<\/h3>\n<p>Para comenzar con la biblioteca Bulletproof, inst\u00e1lela usando el comando Composer a continuaci\u00f3n. Aseg\u00farese de tener <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> instalado en el sistema.<\/p>\n<pre><code>composer require samayo\/bulletproof:4.0.*<\/code><\/pre>\n<p>A continuaci\u00f3n, cree un formulario HTML simple con entrada de archivo y bot\u00f3n de env\u00edo.<\/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>Cargar imagen usando la biblioteca a prueba de balas<\/h3>\n<p>Estamos configurados con una biblioteca y un formulario HTML. Ahora, agreguemos un c\u00f3digo proporcionado por la biblioteca que carga una imagen en el 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>Est\u00e1s listo. Adelante, pru\u00e9balo. Ver\u00e1 sus im\u00e1genes almacenadas dentro de la carpeta &#8216;uploads&#8217; con un nombre \u00fanico. El usuario puede cambiar esta ubicaci\u00f3n con otra cosa.<\/p>\n<p>Si intenta cargar archivos que no sean im\u00e1genes, obtendr\u00e1 un error. Por si acaso, si tambi\u00e9n desea establecer la dimensi\u00f3n, agregue la siguiente declaraci\u00f3n en el c\u00f3digo anterior.<\/p>\n<pre><code>$file-&gt;setDimension(600, 400);<\/code><\/pre>\n<p>Aqu\u00ed &#8216;600&#8217; es el ancho de la imagen y &#8216;400&#8217; es la altura de una imagen. Ajuste los valores seg\u00fan sus requisitos.<\/p>\n<h3>Cargue varias im\u00e1genes usando la biblioteca a prueba de balas<\/h3>\n<p>Es posible que desee cargar varias im\u00e1genes en un servidor utilizando esta biblioteca. Requiere un peque\u00f1o cambio en el c\u00f3digo anterior. Debe agregar un atributo &#8216;m\u00faltiple&#8217; a la entrada del archivo. Adem\u00e1s, use el formato de matriz para el nombre de la entrada del archivo. Despu\u00e9s de esto, recorreremos cada imagen y la subiremos al servidor de la siguiente manera.<\/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>\u00a1Eso es! Espero que comprenda c\u00f3mo cargar una imagen a trav\u00e9s de la biblioteca Bulletproof. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-y-comprimir-imagenes-en-laravel\/\" title=\"Una gu\u00eda para cargar y comprimir im\u00e1genes en Laravel\">Una gu\u00eda para cargar y comprimir im\u00e1genes en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-optimizar-la-imagen-al-cargarla-en-php\/\" title=\"C\u00f3mo optimizar la imagen al cargarla en PHP\">C\u00f3mo optimizar la imagen al cargarla en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/cambiar-el-tamano-de-la-imagen-en-php-usando-tinypng\/\" title=\"Cambiar el tama\u00f1o de la imagen en PHP usando TinyPNG\">Cambiar el tama\u00f1o de la imagen en PHP usando TinyPNG<\/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>Bulletproof es una biblioteca utilizada para cargar im\u00e1genes en PHP con seguridad. En este art\u00edculo, estudiamos c\u00f3mo instalar y usar esta biblioteca en nuestra aplicaci\u00f3n.<\/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":[271],"tags":[849],"class_list":["post-29439","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\/29439","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=29439"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29439\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}