Upload de archivos con PHP versión 1.0

Existen distintas formas para realizar subidas de archivos con PHP. En este artículo vamos a explicar como hacerlo utilizando la función PHP «move_uploaded_file()».

Esta función mueve un archivo subido a una nueva ubicación. Su estructura es la siguiente:

bool move_uploaded_file ( string $filename , string $destination )

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.

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.

Vamos a analizar un ejemplo. En nuestro <body> deberiamos tener un formulario como el siguiente:

<form action="tupagina.php" method="POST" enctype="multipart/form-data"/>
   <input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
   Archivo:<br/>
   <input name="archivo" id="archivo" type="file"/><br/><br/>
   <input type="submit" name="upload" value="Subir"/>
</form>

Para subir archivos mediante un formulario deberemos añadir en la etiqueta <form> lo siguiente: enctype=»multipart/form-data»/.

El campo donde se añade el fichero que simplemente será un input type=»file» y el botón para enviar los datos necesarios teniendo el siguiente aspecto:

Un vez se envia el formulario, entra en juego el código PHP para validar la información y proceder a la realización de la subida del archivo.

//si se quiere realizar una subida de un archivo
if (isset($_POST['upload'])) {

    $archivo = $_FILES['archivo']['name'];

    //si el campo archivo no viene vacio
    if ($archivo != "") {
        $tipo = $_FILES['archivo']['type'];
        $tamano = $_FILES['archivo']['size'];
        $temp = $_FILES['archivo']['tmp_name'];

        //Realizamos algunas comprobaciones antes de realizar la subida
        //En este caso solo queremos subir imágenes tipo: gif, jpg, jpeg, png y de un tamaño máximo de 2000000 bytes
        if (!((strpos($tipo, "gif") || strpos($tipo, "jpeg") || strpos($tipo, "jpg") || strpos($tipo, "png")) && ($tamano < 2000000))) {
            echo 'Error al subir el fichero.';
        }
        else {
            $directorio = 'tu_directorio/';
            //si el archivo no existe
            if (!file_exists($directorio.$archivo)) {
               //Mover el archivo al directorio creado o ya existente
               if (move_uploaded_file($temp, $directorio.$archivo)) {
                    //cambiamos los permisos del fichero
                    chmod($directorio.$archivo, 0777);
                    echo 'Se ha subido correctamente el fichero '.$archivo;
               }
            }
        }
    }
    else {
        echo 'Error al subir el fichero.';
    }
}
Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(1 voto, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

3 respuestas a “Upload de archivos con PHP versión 1.0”

  1. Gerardo Alain Loredo dice:

    Solo una duda en caso de dejar vacio el file no hay manera de evitar que la imagen se regrese a default osea que se quede permanente

  2. Gerardo Alain Loredo dice:

    En caso de dejar vacio el file no hay forma de evitar que la imagen insertada se quede ahi mismo guardada

  3. Marcos Amavi dice:

    Excelente, soy nuevo en PHP no entiendo mucho pero deseo que me compartas los archivos PHP o los dejes aqui para poder descargalos.
    Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.