(PHP 4 >= 4.0.3, PHP 5, PHP 7)
move_uploaded_file — Mueve un archivo subido a una nueva ubicación
$filename
, string $destination
) : bool
Esta función intenta asegurarse de que el archivo designado por
filename
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
destination
.
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.
filename
El nombre de archivo del archivo subido.
destination
El destino del archivo movido.
Devuelve TRUE
en caso de éxito.
Si filename
no es un archivo válido subido,
no sucederá ninguna acción, y
move_uploaded_file() devolverá
FALSE
.
Si filename
es un archivo subido válido, pero
no puede ser movido por algunas razones, no sucederá ninguna acción, y
move_uploaded_file() devolverá
FALSE
. Adicionalmente, se emitirá un aviso.
Ejemplo #1 Subida de múltiples archivos
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() puede evitar ataques de denegación de sistema de ficheros;
// podría ser apropiada más validación/saneamiento del nombre del fichero
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
Nota:
move_uploaded_file() es compatible tanto con el modo seguro como con open_basedir. Sin embargo, las restricciones sólo están impuestas para la ruta
dest
para permitir mover los archivos subidos en los cualesfilename
pueda tener conflictos con tales restricciones. move_uploaded_file() garantiza la seguridad de esta operación permitiendo que sólo aquellos archivos subidos a través de PHP sean movidos.
Si el archivo destino ya existe se sobrescribirá.