{"id":6995,"date":"2018-09-06T10:12:45","date_gmt":"2018-09-06T10:12:45","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=6995"},"modified":"2019-06-27T11:14:52","modified_gmt":"2019-06-27T11:14:52","slug":"dropzone-multiple-subida-de-archivos-con-bootstrap-y-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/","title":{"rendered":"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP"},"content":{"rendered":"<p>En este tutorial vamos explicar en detalle c\u00f3mo agregar a un formulario la posibilidad de <strong>subir m\u00faltiples archivos al servidor<\/strong> utilizando la biblioteca <strong>Dropzonejs<\/strong>, <strong>Bootstrap 4<\/strong>, <strong>PHP<\/strong> y <strong>jQuery Sortable<\/strong>.<\/p>\n<p>La subida masiva de archivos al servidor es una tarea pendiente que hace mucho tiempo quer\u00edamos \u00a0incluir en este blog pero, es dif\u00edcil encontrar el plugin perfecto para incorporar la subida masiva de archivos y de esta forma ahorrarte mucho trabajo.<\/p>\n<p>La <strong>m\u00faltiple subida de archivos<\/strong> puede resultar muy \u00fatil en los casos espec\u00edficos cuando necesitas que el usuario pueda subir varios archivos a la vez al servidor sin tener que seleccionar los archivos de uno en uno.<\/p>\n<p><strong>Dropzonejs<\/strong> es una biblioteca de c\u00f3digo abierto que proporciona la <strong>carga de archivos arrastrando y soltando con vista previa de im\u00e1genes<\/strong>. Es muy liviano ya que no depende de ninguna otra librer\u00eda (como <strong>jQuery<\/strong>) y es altamente personalizable.<\/p>\n<p><strong>Dropzonejs<\/strong> quiz\u00e1 es uno de las librer\u00edas m\u00e1s interesantes y gratuitas que hay para implementar la <strong>m\u00faltiple subida de archivos<\/strong> del lado del cliente debido a que de cara al usuario es muy pr\u00e1ctico y r\u00e1pido. Esto indica que la usabilidad del mismo es muy alta y por tanto atractiva para incluir en nuestras p\u00e1ginas Webs.<\/p>\n<p>Bien es cierto que la librer\u00eda <strong>Dropzonejs<\/strong> nos va a ahorrar mucho trabajo pero, esto no deja de lado que tengas un trabajo para conseguir que esta biblioteca funcione con <strong>PHP<\/strong> y de esta forma permita la <strong>subida de archivos al servidor<\/strong>.<\/p>\n<p>En este art\u00edculo vamos a explicar un ejemplo pr\u00e1ctico que permite al usuario <strong>subir im\u00e1genes al servidor utilizando dropzonejs, Bootstrap 4, PHP y jQuery sortable<\/strong>.<\/p>\n<p>En el ejemplo en funcionamiento las im\u00e1genes se suben directamente al servidor una vez arrestres y sueltes o las selecciones desde el ordenador pulsando en el bot\u00f3n verde \u201cA\u00f1adir im\u00e1genes\u2026\u201d.<\/p>\n<p><strong>Dropzonejs<\/strong> puede ser descargado desde la <a href=\"https:\/\/www.dropzonejs.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">p\u00e1gina oficial<\/a>.<\/p>\n<p>Existe un tutorial de esta implementaci\u00f3n utilizando <strong>Bootstrap<\/strong> en la que nos hemos basado para crear nuestro ejemplo. <a href=\"https:\/\/www.dropzonejs.com\/bootstrap.html\" target=\"_blank\" rel=\"noopener noreferrer\">Ver Dropzone Bootstrap tutorial<\/a>.<\/p>\n<p>En la cabecera de la p\u00e1gina o dentro de la etiqueta &lt;head&gt; agregamos los estilos y scripts necesarios para hacer funcionar nuestro ejemplo.<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/link.html\"><span class=\"kw2\">link<\/span><\/a> <span class=\"kw3\">rel<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;stylesheet&quot;<\/span> <span class=\"kw3\">href<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/maxcdn.bootstrapcdn.com\/bootstrap\/4.0.0\/css\/bootstrap.min.css&quot;<\/span>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/link.html\"><span class=\"kw2\">link<\/span><\/a> <span class=\"kw3\">rel<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;stylesheet&quot;<\/span> <span class=\"kw3\">href<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;css\/styles.css&quot;<\/span>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/code.jquery.com\/jquery-3.2.1.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/maxcdn.bootstrapcdn.com\/bootstrap\/4.0.0\/js\/bootstrap.min.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;js\/dropzone.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;js\/jquery-ui.min.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>Estamos incluyendo los archivos necesarios para tener disponibles las posibilidades que ofrece <strong>Bootstrap<\/strong>, nuestra hoja de estilos personalizada, la librer\u00eda <strong>jQuery<\/strong> y <strong>jQuery Ui<\/strong> para poder ordenar los elementos y finalmente la biblioteca <strong>dropzonejs<\/strong>.<\/p>\n<p>En nuestra hoja de estilos <em>styles.css <\/em>tan solo agregamos algunos estilos que usamos para el ejemplo:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"css\" style=\"font-family:monospace;\"><span class=\"re0\">#previews<\/span> <span class=\"br0\">&#123;<\/span>\n  <span class=\"kw1\">padding<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n  <span class=\"kw1\">padding-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">0px<\/span><span class=\"sy0\">;<\/span>\n  <span class=\"kw1\">padding-bottom<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">0px<\/span><span class=\"sy0\">;<\/span>\n  <span class=\"kw1\">margin-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n  <span class=\"kw1\">min-height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">220px<\/span><span class=\"sy0\">;<\/span>\n  <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#fbfbfb<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.dropzone-here<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">text-align<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">60px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">width<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\"><span class=\"nu0\">100<\/span>%<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">position<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">absolute<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">font-size<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">18px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">font-weight<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">bold<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">50px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re0\">#previews<\/span> <span class=\"re1\">.file-row<\/span> <span class=\"re1\">.delete<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">none<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re0\">#previews<\/span> <span class=\"re1\">.file-row<\/span><span class=\"re1\">.dz-success<\/span> .start<span class=\"sy0\">,<\/span>\n<span class=\"re0\">#previews<\/span> <span class=\"re1\">.file-row<\/span><span class=\"re1\">.dz-success<\/span> <span class=\"re1\">.cancel<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">none<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re0\">#previews<\/span> <span class=\"re1\">.file-row<\/span><span class=\"re1\">.dz-success<\/span> <span class=\"re1\">.delete<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">block<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.dz-image-preview<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">border<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#d6d4d4<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding-bottom<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">margin-bottom<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.preview<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">position<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">relative<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#fff<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">border<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#dadada<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">text-align<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">table-cell<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">vertical-align<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">middle<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.preview<\/span> img <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">cursor<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">pointer<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.progress<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">border<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#ccc<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">position<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">relative<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">block<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">22px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">min-width<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">200px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">margin<\/span><span class=\"sy0\">:<\/span><span class=\"re3\">4px<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#DEDEDE<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> -webkit-gradient<span class=\"br0\">&#40;<\/span>linear<span class=\"sy0\">,<\/span> <span class=\"kw1\">left<\/span> <span class=\"kw1\">top<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">left<\/span> <span class=\"kw1\">bottom<\/span><span class=\"sy0\">,<\/span> from<span class=\"br0\">&#40;<\/span><span class=\"re0\">#ccc<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> to<span class=\"br0\">&#40;<\/span><span class=\"re0\">#e9e9e9<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> -moz-linear-gradient<span class=\"br0\">&#40;<\/span><span class=\"kw1\">top<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">#ccc<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">#e9e9e9<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    filter<span class=\"sy0\">:<\/span>  progid<span class=\"re2\">:DXImageTransform<\/span><span class=\"re1\">.Microsoft<\/span>.gradient<span class=\"br0\">&#40;<\/span>startColorstr<span class=\"sy0\">=<\/span><span class=\"st0\">'#cccccc'<\/span><span class=\"sy0\">,<\/span> endColorstr<span class=\"sy0\">=<\/span><span class=\"st0\">'#e9e9e9'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    -moz-box-shadow<span class=\"sy0\">:<\/span>0 <span class=\"re3\">1px<\/span> 0 <span class=\"re0\">#fff<\/span><span class=\"sy0\">;<\/span>\n    -webkit-box-shadow<span class=\"sy0\">:<\/span>0 <span class=\"re3\">1px<\/span> 0 <span class=\"re0\">#fff<\/span><span class=\"sy0\">;<\/span>\n    box-shadow<span class=\"sy0\">:<\/span>0 <span class=\"re3\">1px<\/span> 0 <span class=\"re0\">#fff<\/span><span class=\"sy0\">;<\/span>\n    -moz-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">4px<\/span><span class=\"sy0\">;<\/span>\n    -webkit-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">4px<\/span><span class=\"sy0\">;<\/span>\n    border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">4px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.progress-bar<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#ffffff<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">block<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">20px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">margin<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">text-align<\/span><span class=\"sy0\">:<\/span><span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    -moz-box-shadow<span class=\"sy0\">:<\/span><span class=\"kw2\">inset<\/span> 0 <span class=\"re3\">1px<\/span> 0 rgba<span class=\"br0\">&#40;<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>0.5<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    -webkit-box-shadow<span class=\"sy0\">:<\/span><span class=\"kw2\">inset<\/span> 0 <span class=\"re3\">1px<\/span> 0 rgba<span class=\"br0\">&#40;<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>0.5<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    box-shadow<span class=\"sy0\">:<\/span><span class=\"kw2\">inset<\/span> 0 <span class=\"re3\">1px<\/span> 0 rgba<span class=\"br0\">&#40;<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>255<span class=\"sy0\">,<\/span>0.5<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    -moz-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">3px<\/span><span class=\"sy0\">;<\/span>\n    -webkit-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">3px<\/span><span class=\"sy0\">;<\/span>\n    border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">3px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">border<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#0078a5<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#5C9ADE<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> -moz-linear-gradient<span class=\"br0\">&#40;<\/span><span class=\"kw1\">top<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">#00adee<\/span> <span class=\"re3\"><span class=\"nu0\">10<\/span>%<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">#0078a5<\/span> <span class=\"re3\"><span class=\"nu0\">90<\/span>%<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> -webkit-gradient<span class=\"br0\">&#40;<\/span>linear<span class=\"sy0\">,<\/span> <span class=\"kw1\">left<\/span> <span class=\"kw1\">top<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">left<\/span> <span class=\"kw1\">bottom<\/span><span class=\"sy0\">,<\/span> color-stop<span class=\"br0\">&#40;<\/span>0.1<span class=\"sy0\">,<\/span> <span class=\"re0\">#00adee<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> color-stop<span class=\"br0\">&#40;<\/span>0.9<span class=\"sy0\">,<\/span> <span class=\"re0\">#0078a5<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Dentro del &lt;body&gt; o cuerpo de la p\u00e1gina, en el formulario puedes incluir el siguiente c\u00f3digo:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/form.html\"><span class=\"kw2\">form<\/span><\/a> <span class=\"kw3\">action<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;index.php&quot;<\/span> <span class=\"kw3\">method<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;post&quot;<\/span> <span class=\"kw3\">enctype<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;multipart\/form-data&quot;<\/span>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;fallback&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/input.html\"><span class=\"kw2\">input<\/span><\/a> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;file&quot;<\/span> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;file&quot;<\/span> <span class=\"kw3\">multiple<\/span> <span class=\"sy0\">\/<\/span>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;actions&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;row&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-7&quot;<\/span>&gt;<\/span>\n            <span class=\"sc-1\">&lt;!-- The fileinput-button span is used to style the file input field as button --&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-success fileinput-button&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;glyphicon glyphicon-plus&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Add files...<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;submit&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-primary start&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;display: none;&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;glyphicon glyphicon-upload&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Start upload<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;reset&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-warning cancel&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;display: none;&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;glyphicon glyphicon-ban-circle&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Cancel upload<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n&nbsp;\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-5&quot;<\/span>&gt;<\/span>\n            <span class=\"sc-1\">&lt;!-- The global file processing state --&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;fileupload-process&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;total-progress&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress progress-striped active&quot;<\/span> role<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progressbar&quot;<\/span> aria-valuemin<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0&quot;<\/span> aria-valuemax<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;100&quot;<\/span> aria-valuenow<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0&quot;<\/span>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress-bar progress-bar-success&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;width:0%;&quot;<\/span> data-dz-uploadprogress&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n&nbsp;\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;table table-striped files&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;previews&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;template&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;file-row row&quot;<\/span>&gt;<\/span>\n            <span class=\"sc-1\">&lt;!-- This is used as the file preview template --&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-xs-12 col-lg-3&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;preview&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;width:160px;height:160px;&quot;<\/span>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/img.html\"><span class=\"kw2\">img<\/span><\/a> data-dz-thumbnail <span class=\"sy0\">\/<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/br.html\"><span class=\"kw2\">br<\/span><\/a><span class=\"sy0\">\/<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-primary start&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;display:none;&quot;<\/span>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;glyphicon glyphicon-upload&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Empezar<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> data-dz-remove <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-warning cancel&quot;<\/span>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;icon-ban-circle fa fa-ban-circle&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span> \n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Cancelar<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a> data-dz-remove <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-danger delete&quot;<\/span>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;icon-trash fa fa-trash&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/i.html\"><span class=\"kw2\">i<\/span><\/a>&gt;<\/span> \n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>Eliminar<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/button.html\"><span class=\"kw2\">button<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-xs-12 col-lg-9&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;name&quot;<\/span> data-dz-name&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;size&quot;<\/span> data-dz-size&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/strong.html\"><span class=\"kw2\">strong<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;error text-danger&quot;<\/span> data-dz-errormessage&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/strong.html\"><span class=\"kw2\">strong<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress progress-striped active&quot;<\/span> role<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progressbar&quot;<\/span> aria-valuemin<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0&quot;<\/span> aria-valuemax<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;100&quot;<\/span> aria-valuenow<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0&quot;<\/span>&gt;<\/span>\n                      <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress-bar progress-bar-success&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;width:0%;&quot;<\/span> data-dz-uploadprogress&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n&nbsp;\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;dropzone-here&quot;<\/span>&gt;<\/span>Drop files here to upload.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/form.html\"><span class=\"kw2\">form<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>Este c\u00f3digo es el formulario que en el ejemplo tan solo permite subir im\u00e1genes directamente al servidor. Como puedes observar hay 3 partes bien diferenciadas. Tenemos el bloque de acciones donde en nuestro ejemplo tan solo nos interesa mostrar el bot\u00f3n para agregar im\u00e1genes. La plantilla dentro del contenedor con id=\u00bbpreviews\u00bb que se usa para mostrar la imagen previa de cada elemento. Y finalmente, justo debajo, la zona para arrastrar y soltar.<\/p>\n<p>El c\u00f3digo m\u00e1s interesante y que ejecuta la acci\u00f3n se puede situar en la cabecera justo despu\u00e9s de la llamada a las librer\u00edas o justo antes de la etiqueta de cierre &lt;\/body&gt;.<\/p>\n<div id=\"wpshdo_4\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_4\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_4\"><\/a><a id=\"wpshat_4\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_4\"  onClick=\"javascript:wpsh_toggleBlock(4)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_code(4)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_print(4)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_4\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span class=\"sy0\">&lt;<\/span>script<span class=\"sy0\">&gt;<\/span>\n<span class=\"co1\">\/\/ Get the template HTML and remove it from the doument<\/span>\n<span class=\"kw2\">var<\/span> previewNode <span class=\"sy0\">=<\/span> document.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#template&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\npreviewNode.<span class=\"me1\">id<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"kw2\">var<\/span> previewTemplate <span class=\"sy0\">=<\/span> previewNode.<span class=\"me1\">parentNode<\/span>.<span class=\"me1\">innerHTML<\/span><span class=\"sy0\">;<\/span>\npreviewNode.<span class=\"me1\">parentNode<\/span>.<span class=\"me1\">removeChild<\/span><span class=\"br0\">&#40;<\/span>previewNode<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"kw2\">var<\/span> myDropzone <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Dropzone<span class=\"br0\">&#40;<\/span>document.<span class=\"me1\">body<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span>\n    url<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;upload.php&quot;<\/span><span class=\"sy0\">,<\/span>\n    paramName<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;file&quot;<\/span><span class=\"sy0\">,<\/span>\n    acceptedFiles<span class=\"sy0\">:<\/span> <span class=\"st0\">'image\/*'<\/span><span class=\"sy0\">,<\/span>\n    maxFilesize<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span>\n    maxFiles<span class=\"sy0\">:<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">,<\/span>\n    thumbnailWidth<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span>\n    thumbnailHeight<span class=\"sy0\">:<\/span> <span class=\"nu0\">160<\/span><span class=\"sy0\">,<\/span>\n    thumbnailMethod<span class=\"sy0\">:<\/span> <span class=\"st0\">'contain'<\/span><span class=\"sy0\">,<\/span>\n    parallelUploads<span class=\"sy0\">:<\/span> 20<span class=\"sy0\">,<\/span>\n    previewTemplate<span class=\"sy0\">:<\/span> previewTemplate<span class=\"sy0\">,<\/span>\n    autoQueue<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span>\n    previewsContainer<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;#previews&quot;<\/span><span class=\"sy0\">,<\/span>\n    clickable<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;.fileinput-button&quot;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\nmyDropzone.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;addedfile&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>file<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'.dropzone-here'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">hide<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"co1\">\/\/ Hookup the start button<\/span>\n    file.<span class=\"me1\">previewElement<\/span>.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;.start&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">onclick<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> myDropzone.<span class=\"me1\">enqueueFile<\/span><span class=\"br0\">&#40;<\/span>file<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Update the total progress bar<\/span>\nmyDropzone.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;totaluploadprogress&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>progress<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    document.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#total-progress .progress-bar&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">style<\/span>.<span class=\"me1\">width<\/span> <span class=\"sy0\">=<\/span> progress <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;%&quot;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\nmyDropzone.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;sending&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>file<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"co1\">\/\/ Show the total progress bar when upload starts<\/span>\n    document.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#total-progress&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">style<\/span>.<span class=\"me1\">opacity<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;1&quot;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"co1\">\/\/ And disable the start button<\/span>\n    file.<span class=\"me1\">previewElement<\/span>.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;.start&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">setAttribute<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;disabled&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;disabled&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Hide the total progress bar when nothing's uploading anymore<\/span>\nmyDropzone.<span class=\"me1\">on<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;queuecomplete&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>progress<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"co1\">\/\/document.querySelector(&quot;#total-progress&quot;).style.opacity = &quot;0&quot;;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Setup the buttons for all transfers<\/span>\n<span class=\"co1\">\/\/ The &quot;add files&quot; button doesn't need to be setup because the config<\/span>\n<span class=\"co1\">\/\/ `clickable` has already been specified.<\/span>\ndocument.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#actions .start&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">onclick<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    myDropzone.<span class=\"me1\">enqueueFiles<\/span><span class=\"br0\">&#40;<\/span>myDropzone.<span class=\"me1\">getFilesWithStatus<\/span><span class=\"br0\">&#40;<\/span>Dropzone.<span class=\"me1\">ADDED<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#previews'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">sortable<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span>\n    items<span class=\"sy0\">:<\/span><span class=\"st0\">'.file-row'<\/span><span class=\"sy0\">,<\/span>\n    cursor<span class=\"sy0\">:<\/span> <span class=\"st0\">'move'<\/span><span class=\"sy0\">,<\/span>\n    opacity<span class=\"sy0\">:<\/span> <span class=\"nu0\">0.5<\/span><span class=\"sy0\">,<\/span>\n    containment<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;parent&quot;<\/span><span class=\"sy0\">,<\/span>\n    distance<span class=\"sy0\">:<\/span> <span class=\"nu0\">20<\/span><span class=\"sy0\">,<\/span>\n    tolerance<span class=\"sy0\">:<\/span> <span class=\"st0\">'pointer'<\/span><span class=\"sy0\">,<\/span>\n    update<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>e<span class=\"sy0\">,<\/span> ui<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n        <span class=\"co1\">\/\/actions when sorting<\/span>\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy0\">&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><\/pre><\/div><\/div>\n<p>En el c\u00f3digo anterior estamos estableciendo el contenedor que har\u00e1 de vista previa y hacemos una llamada a la clase <strong>Dropzone<\/strong> con algunos par\u00e1metros que explicamos a continuaci\u00f3n:<\/p>\n<ul>\n<li><em>url<\/em>: especificamos la url o el archivo que subir\u00e1 las im\u00e1genes al servidor con <strong>PHP<\/strong>.<\/li>\n<li><em>paramName<\/em>: especificamos el nombre del campo del formulario que contiene los archivos a subir.<\/li>\n<li><em>aceptedFiles<\/em>: indicamos que solo queremos que se puedan subir im\u00e1genes.<\/li>\n<li><em>maxFilesize<\/em>: Indicamos que solo queremos im\u00e1genes que tengan un tama\u00f1o inferior a 2 MB.<\/li>\n<li><em>maxFiles<\/em>: Indicamos el n\u00famero m\u00e1ximo de im\u00e1genes que deseamos que se puedan subir. En el caso del ejemplo solo se pueden subir 3 im\u00e1genes de golpe.<\/li>\n<li><em>thumbnailWidth<\/em>: para especificar el ancho de la imagen previa.\u00a0En el caso del ejemplo 160px.<\/li>\n<li><em>thumbnailHeight<\/em>: para especificar el alto de la imagen previa. En el caso del ejemplo 160px.<\/li>\n<li><em>previewTemplate<\/em>: indicamos la plantilla a usar para las im\u00e1genes previas.<\/li>\n<li><em>autoQueue<\/em>: establecido en true para procesar la cola de archivos autom\u00e1ticamente.<\/li>\n<li><em>previewsContainter<\/em>: para establecer el identificador del contenedor donde se agregar\u00e1n las im\u00e1genes previas.<\/li>\n<li><em>clickable<\/em>: para indicar el elemento que abre la ventana para seleccionar archivos.<\/li>\n<\/ul>\n<p>Este plugin tiene much\u00edsimas m\u00e1s opciones. Puedes ver todas las <a href=\"https:\/\/www.dropzonejs.com\/#configuration-options\" target=\"_blank\" rel=\"noopener noreferrer\">opciones en la p\u00e1gina oficial<\/a>.<\/p>\n<p>Adicionalmente tambi\u00e9n puedes manejar pr\u00e1cticamente todos los eventos.\u00a0 En el caso del ejemplo estamos usando:<\/p>\n<ul>\n<li><em>addedfile<\/em>: Se ejecuta cuando un archivo ha sido a\u00f1adido a la lista.<\/li>\n<li><em>totaluploadprogress<\/em>: Se invoca con el total de <em>uploadProgress<\/em> (0-100), <em>totalBytes<\/em> y <em>totalBytesSent<\/em>. Este evento se puede usar para mostrar el progreso general de carga de todos los archivos.<\/li>\n<li><em>sending<\/em>:\u00a0Se llama justo antes de que se env\u00ede cada archivo. Obtiene el objeto <em>xhr<\/em> y los objetos <em>formData<\/em> como segundo y tercer par\u00e1metro, por lo que puede modificarlos (por ejemplo, para agregar un token CSRF) o agregar datos adicionales.<\/li>\n<li><em>queuecomplete<\/em>: Se ejecuta cuando todos los archivos en la cola terminan de cargarse.<\/li>\n<\/ul>\n<p>Puedes ver todos los eventos que se pueden manejar en <a href=\"https:\/\/www.dropzonejs.com\/#event-list\" target=\"_blank\" rel=\"noopener noreferrer\">Event list.<\/a><\/p>\n<p>El archivo <em>upload.php<\/em> que se encarga de subir las im\u00e1genes al servidor contiene el siguiente c\u00f3digo:<\/p>\n<div id=\"wpshdo_5\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_5\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_5\"><\/a><a id=\"wpshat_5\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_5\"  onClick=\"javascript:wpsh_toggleBlock(5)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_code(5)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_print(5)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_5\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;file&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;type&quot;<\/span><span class=\"br0\">]<\/span> <span class=\"sy0\">==<\/span> <span class=\"st0\">&quot;image\/pjpeg&quot;<\/span><span class=\"br0\">&#41;<\/span>\n    <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;file&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;type&quot;<\/span><span class=\"br0\">]<\/span> <span class=\"sy0\">==<\/span> <span class=\"st0\">&quot;image\/jpeg&quot;<\/span><span class=\"br0\">&#41;<\/span>\n    <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;file&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;type&quot;<\/span><span class=\"br0\">]<\/span> <span class=\"sy0\">==<\/span> <span class=\"st0\">&quot;image\/png&quot;<\/span><span class=\"br0\">&#41;<\/span>\n    <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;file&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;type&quot;<\/span><span class=\"br0\">]<\/span> <span class=\"sy0\">==<\/span> <span class=\"st0\">&quot;image\/gif&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/move_uploaded_file\"><span class=\"kw3\">move_uploaded_file<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;file&quot;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st0\">&quot;tmp_name&quot;<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;images\/&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$_FILES<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'file'<\/span><span class=\"br0\">]<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'name'<\/span><span class=\"br0\">]<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'si'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'no'<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Donde tan solo comprobamos que los archivos que se est\u00e1n intentando subir sean im\u00e1genes tipo pjpeg, jpeg, png o gif y con la funci\u00f3n\u00a0<em>move_uploaded_file()<\/em> movemos el archivo temporal subido a la carpeta deseada.<\/p>\n<p>Adem\u00e1s de la subida de archivos, en el ejemplo en funcionamiento estamos ofreciendo la posibilidad de poder ordenar los elementos utilizando <strong>jQuery Sortable<\/strong>. Lo estamos consiguiendo usando la funci\u00f3n <strong>sortable<\/strong> que trae la librer\u00eda<strong> jQuery UI<\/strong>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>En los m\u00e1s de 10 a\u00f1os que llevo trabajando en esto de la creaci\u00f3n de p\u00e1ginas Webs siempre he estado buscando y usando plugins para la subida m\u00faltiple de archivos pero, o son muy simples y no acaban de funcionar o a\u00f1aden demasiados archivos que acaban confundi\u00e9ndote.\u00a0<strong>Dropzone<\/strong> es muy liviano en este sentido ya que tan solo es necesario incorporar 2 archivos para implementar la subida de archivos que te facilita la p\u00e1gina oficial ahorr\u00e1ndote mucho trabajo. Adem\u00e1s tiene muchas opciones y eventos que lo hace muy personalizable. A\u00fan as\u00ed, no te vas a librar para dedicar unas horas a comprender el funcionamiento y sobretodo para conseguir una implementaci\u00f3n utilizando\u00a0<strong>PHP<\/strong>.<\/p>\n<p>Para una comprensi\u00f3n completa de c\u00f3mo funciona <strong>Dropzone.js<\/strong>, lee detenidamente este tutorial de <strong>Dropzone<\/strong> y visita el sitio web <a href=\"https:\/\/www.dropzonejs.com\" target=\"_blank\" rel=\"noopener noreferrer\">www.dropzonejs.com<\/a> para ver la documentaci\u00f3n completa.<\/p>\n<p>B\u00e1sicamente, <strong>Dropzone<\/strong> hace todo el trabajo pesado por ti y expone una API de muy alto nivel que puedes usar para construir tu interfaz de usuario.<\/p>\n<p>La caracter\u00edstica principal de <strong>Dropzone<\/strong> son sus muchas opciones y sus eventos que puedes escuchar, para que puedas reaccionar a cada cambio y, de esta forma, poder personalizarlo al m\u00e1ximo.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/dropzone\/multiple\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/dropzone\/multiple\/dropzone-multiple.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.<\/p>\n","protected":false},"author":1,"featured_media":7280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[149,14,5],"tags":[163,74,110,102],"class_list":["post-6995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destacados","category-javascript","category-jquery","tag-bootstrap","tag-contenedores","tag-imagenes","tag-uploads"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-06T10:12:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-27T11:14:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/\",\"name\":\"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png\",\"datePublished\":\"2018-09-06T10:12:45+00:00\",\"dateModified\":\"2019-06-27T11:14:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog","description":"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog","og_description":"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2018-09-06T10:12:45+00:00","article_modified_time":"2019-06-27T11:14:52+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/","name":"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png","datePublished":"2018-09-06T10:12:45+00:00","dateModified":"2019-06-27T11:14:52+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Tutorial y c\u00f3digo de ejemplo que te permite incorporar en tu p\u00e1gina Web la m\u00faltiple subida de archivos utilizando Dropzonejs, Bootstrap 4 y PHP.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2018\/09\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/dropzone-multiple-subida-de-archivos-con-bootstrap-y-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Dropzone m\u00faltiple subida de archivos con Bootstrap y PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=6995"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6995\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7280"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=6995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=6995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=6995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}