<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.filesystem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.move-uploaded-file.php',
    1 => 'move_uploaded_file',
    2 => 'Mueve un archivo subido a una nueva ubicaci&oacute;n',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'Funciones del Sistema de Archivos',
  ),
  'prev' => 
  array (
    0 => 'function.mkdir.php',
    1 => 'mkdir',
  ),
  'next' => 
  array (
    0 => 'function.parse-ini-file.php',
    1 => 'parse_ini_file',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/filesystem/functions/move-uploaded-file.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.move-uploaded-file" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">move_uploaded_file</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.0.3, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">move_uploaded_file</span> &mdash; <span class="dc-title">Mueve un archivo subido a una nueva ubicación</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.move-uploaded-file-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>move_uploaded_file</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$destination</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Esta función intenta asegurarse de que el archivo designado por
   <code class="parameter">filename</code> es un archivo subido válido (lo que significa
   que fue subido mediante el mecanismo de subida HTTP POST de PHP). Si
   el archivo es válido, será movido al nombre de archivo dado por
   <code class="parameter">destination</code>.
  </p>
  <p class="para">
   El orden de comprobación 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>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.move-uploaded-file-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">filename</code></dt>
     <dd>
      <p class="para">
       El nombre de archivo del archivo subido.
      </p>
     </dd>
    
    
     <dt><code class="parameter">destination</code></dt>
     <dd>
      <p class="para">
       El destino del archivo movido.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.move-uploaded-file-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> en caso de éxito.
  </p>
  <p class="para">
   Si <code class="parameter">filename</code> no es un archivo válido subido,
   no sucederá ninguna acción, y
   <span class="function"><strong>move_uploaded_file()</strong></span> devolverá
   <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
  </p>
  <p class="para">
   Si <code class="parameter">filename</code> es un archivo subido válido, pero
   no puede ser movido por algunas razones, no sucederá ninguna acción, y
   <span class="function"><strong>move_uploaded_file()</strong></span> devolverá
   <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Adicionalmente, se emitirá un aviso.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.move-uploaded-file-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Subida  de múltiples archivos</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$uploads_dir </span><span style="color: #007700">= </span><span style="color: #DD0000">'/uploads'</span><span style="color: #007700">;<br />foreach (</span><span style="color: #0000BB">$_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"pictures"</span><span style="color: #007700">][</span><span style="color: #DD0000">"error"</span><span style="color: #007700">] as </span><span style="color: #0000BB">$key </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$error</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">$error </span><span style="color: #007700">== </span><span style="color: #0000BB">UPLOAD_ERR_OK</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$tmp_name </span><span style="color: #007700">= </span><span style="color: #0000BB">$_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"pictures"</span><span style="color: #007700">][</span><span style="color: #DD0000">"tmp_name"</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">];<br />        </span><span style="color: #FF8000">// basename() puede evitar ataques de denegación de sistema de ficheros;<br />        // podría ser apropiada más validación/saneamiento del nombre del fichero<br />        </span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #0000BB">basename</span><span style="color: #007700">(</span><span style="color: #0000BB">$_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"pictures"</span><span style="color: #007700">][</span><span style="color: #DD0000">"name"</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">]);<br />        </span><span style="color: #0000BB">move_uploaded_file</span><span style="color: #007700">(</span><span style="color: #0000BB">$tmp_name</span><span style="color: #007700">, </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$uploads_dir</span><span style="color: #DD0000">/</span><span style="color: #0000BB">$name</span><span style="color: #DD0000">"</span><span style="color: #007700">);<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.move-uploaded-file-notes">
  <h3 class="title">Notas</h3>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    <span class="function"><strong>move_uploaded_file()</strong></span> es compatible con
    <a href="ini.core.php#ini.open-basedir" class="link">open_basedir</a>.
    Sin embargo, las restricciones sólo están impuestas para la
    ruta <code class="parameter">dest</code> para permitir mover
    los archivos subidos en los cuales <code class="parameter">filename</code> pueda tener
    conflictos con tales restricciones. <span class="function"><strong>move_uploaded_file()</strong></span> garantiza
    la seguridad de esta operación permitiendo que sólo aquellos archivos subidos
    a través de PHP sean movidos.
   </p>
  </p></blockquote>
  <div class="warning"><strong class="warning">Advertencia</strong>
   <p class="para">
    Si el archivo destino ya existe se sobrescribirá.
   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.move-uploaded-file-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.is-uploaded-file.php" class="function" rel="rdfs-seeAlso">is_uploaded_file()</a> - Indica si el archivo fue subido mediante HTTP POST</span></li>
    <li><span class="function"><a href="function.rename.php" class="function" rel="rdfs-seeAlso">rename()</a> - Renombra un fichero o un directorio</span></li>
    <li>Véase <a href="features.file-upload.php" class="link">Manejo de subidas de archivos</a> para un sencillo ejemplo de uso</li>
   </ul>
  </p>
 </div>

</div><?php manual_footer($setup); ?>