{"id":1933,"date":"2012-02-27T16:21:55","date_gmt":"2012-02-27T16:21:55","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=1933"},"modified":"2013-10-20T19:50:18","modified_gmt":"2013-10-20T19:50:18","slug":"upload-files-1","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/","title":{"rendered":"Upload de archivos con PHP versi\u00f3n 1.0"},"content":{"rendered":"<p>Existen distintas formas para realizar subidas de archivos con PHP. En este art\u00edculo vamos a explicar como hacerlo utilizando la funci\u00f3n PHP \u00abmove_uploaded_file()\u00bb.<\/p>\n<p>Esta funci\u00f3n mueve un archivo subido a una nueva ubicaci\u00f3n. Su estructura es la siguiente:<\/p>\n<pre>bool <strong>move_uploaded_file<\/strong> ( string <tt>$filename<\/tt> , string <tt>$destination<\/tt> )<\/pre>\n<p>Esta funci\u00f3n intenta asegurarse de que el archivo designado por <em><tt>filename<\/tt><\/em> es un archivo subido v\u00e1lido (lo que significa que fue subido mediante el mecanismo de subida HTTP POST de PHP). Si el archivo es v\u00e1lido, ser\u00e1 movido al nombre de archivo dado por <em><tt>destination<\/tt><\/em>.<\/p>\n<p>El orden de comprobaci\u00f3n es especialmente importante si hay cualquier posibilidad de que cualquier cosa hecha con los archivos subidos pueda revelar su contenido al usuario, o incluso a otros usuarios en el mismo sistema.<\/p>\n<p>Devuelve <strong><tt>TRUE<\/tt><\/strong> en caso de \u00e9xito.<\/p>\n<p>Si <em><tt>filename<\/tt><\/em> no es un archivo v\u00e1lido subido, no suceder\u00e1 ninguna acci\u00f3n, y <strong>move_uploaded_file()<\/strong> devolver\u00e1 <strong><tt>FALSE<\/tt><\/strong>.<\/p>\n<p>Si <em><tt>filename<\/tt><\/em> es un archivo subido v\u00e1lido, pero no puede ser movido por algunas razones, no suceder\u00e1 ninguna acci\u00f3n, y <strong>move_uploaded_file()<\/strong> devolver\u00e1 <strong><tt>FALSE<\/tt><\/strong>. Adicionalmente, se emitir\u00e1 un aviso.<\/p>\n<p>Vamos a analizar un ejemplo. En nuestro &lt;body&gt; deberiamos tener un formulario como el siguiente:<\/p>\n<pre>&lt;form action=\"tupagina.php\" method=\"POST\" enctype=\"multipart\/form-data\"\/&gt;\r\n   &lt;input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1000000\"\/&gt;\r\n   Archivo:&lt;br\/&gt;\r\n   &lt;input name=\"archivo\" id=\"archivo\" type=\"file\"\/&gt;&lt;br\/&gt;&lt;br\/&gt;\r\n   &lt;input type=\"submit\" name=\"upload\" value=\"Subir\"\/&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>Para subir archivos mediante un formulario deberemos a\u00f1adir en la etiqueta &lt;form&gt; lo siguiente: enctype=\u00bbmultipart\/form-data\u00bb\/.<\/p>\n<p>El campo donde se a\u00f1ade el fichero que simplemente ser\u00e1 un input type=\u00bbfile\u00bb y el bot\u00f3n para enviar los datos necesarios teniendo el siguiente aspecto:<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/upload.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1939\" title=\"upload\" alt=\"\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/upload.png\" width=\"217\" height=\"27\" \/><\/a>Un vez se envia el formulario, entra en juego el c\u00f3digo PHP para validar la informaci\u00f3n y proceder a la realizaci\u00f3n de la subida del archivo.<\/p>\n<pre>\/\/si se quiere realizar una subida de un archivo\r\nif (isset($_POST['upload'])) {\r\n\r\n\u00a0\u00a0\u00a0 $archivo = $_FILES['archivo']['name'];\r\n\r\n\u00a0\u00a0\u00a0 \/\/si el campo archivo no viene vacio\r\n\u00a0\u00a0\u00a0 if ($archivo != \"\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $tipo = $_FILES['archivo']['type'];\r\n\u00a0\u00a0 \u00a0    $tamano = $_FILES['archivo']['size'];\r\n\u00a0\u00a0 \u00a0    $temp = $_FILES['archivo']['tmp_name'];\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Realizamos algunas comprobaciones antes de realizar la subida\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/En este caso solo queremos subir im\u00e1genes tipo: gif, jpg, jpeg, png y de un tama\u00f1o m\u00e1ximo de 2000000 bytes\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (!((strpos($tipo, \"gif\") || strpos($tipo, \"jpeg\") || strpos($tipo, \"jpg\") || strpos($tipo, \"png\")) &amp;&amp; ($tamano &lt; 2000000))) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 echo 'Error al subir el fichero.';\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $directorio = 'tu_directorio\/';\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/si el archivo no existe\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (!file_exists($directorio.$archivo)) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0       \/\/Mover el archivo al directorio creado o ya existente\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0       if (move_uploaded_file($temp, $directorio.$archivo)) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/cambiamos los permisos del fichero\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 chmod($directorio.$archivo, 0777);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 echo 'Se ha subido correctamente el fichero '.$archivo;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0       }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 echo 'Error al subir el fichero.';\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Existen distintas formas para realizar subidas de archivos con PHP. En este art\u00edculo vamos a explicar como hacerlo utilizando la funci\u00f3n PHP \u00abmove_uploaded_file()\u00bb. Esta funci\u00f3n mueve un archivo subido a una nueva ubicaci\u00f3n. Su estructura es la siguiente: bool move_uploaded_file ( string $filename , string $destination ) Esta funci\u00f3n intenta asegurarse de que el archivo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4988,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[103,84,79,102],"class_list":["post-1933","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-archivos","tag-formularios","tag-inputs","tag-uploads"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog<\/title>\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=\"Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Existen distintas formas para realizar subidas de archivos con PHP. En este art\u00edculo vamos a explicar como hacerlo utilizando la funci\u00f3n PHP \u00abmove_uploaded_file()\u00bb. Esta funci\u00f3n mueve un archivo subido a una nueva ubicaci\u00f3n. Su estructura es la siguiente: bool move_uploaded_file ( string $filename , string $destination ) Esta funci\u00f3n intenta asegurarse de que el archivo [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/\" \/>\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=\"2012-02-27T16:21:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-10-20T19:50:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"128\" \/>\n\t<meta property=\"og:image:height\" content=\"128\" \/>\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=\"2 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\/upload-files-1\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/\",\"name\":\"Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png\",\"datePublished\":\"2012-02-27T16:21:55+00:00\",\"dateModified\":\"2013-10-20T19:50:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png\",\"width\":128,\"height\":128},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upload de archivos con PHP versi\u00f3n 1.0\"}]},{\"@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":"Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog","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":"Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog","og_description":"Existen distintas formas para realizar subidas de archivos con PHP. En este art\u00edculo vamos a explicar como hacerlo utilizando la funci\u00f3n PHP \u00abmove_uploaded_file()\u00bb. Esta funci\u00f3n mueve un archivo subido a una nueva ubicaci\u00f3n. Su estructura es la siguiente: bool move_uploaded_file ( string $filename , string $destination ) Esta funci\u00f3n intenta asegurarse de que el archivo [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-02-27T16:21:55+00:00","article_modified_time":"2013-10-20T19:50:18+00:00","og_image":[{"width":128,"height":128,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.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":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/","url":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/","name":"Upload de archivos con PHP versi\u00f3n 1.0 - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png","datePublished":"2012-02-27T16:21:55+00:00","dateModified":"2013-10-20T19:50:18+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/10\/php1.png","width":128,"height":128},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/upload-files-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Upload de archivos con PHP versi\u00f3n 1.0"}]},{"@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\/1933","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=1933"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1933\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/4988"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=1933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=1933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=1933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}