En este tutorial veremos cómo subir un archivo con PHP, y como obtener la información de este para almacenarla en base de datos.

Cuando se sube un archivo desde el formulario, PHP automáticamente se encarga de subirlo y de almacenarlo en una carpeta y nombre temporal, por ejemplo:

C:\Bitnami\rubystack-2\php\tmp\phpEB17.tmp

La verdad, es que nosotros no subimos el archivo, PHP se encarga de subirlo, lo único que de lo que nos encargamos es de moverlo de la carpeta temporal a la carpeta donde queremos almacenarlo y renombrarlo si así lo requerimos.

La información que podemos obtener del archivo subido es su nombre, tipo de archivo, ubicación temporal, su tamaño en bytes:

La siguiente información se obtiene con var_dump($_FILES[‘archivo’]);

array(5) {
  ["name"]=> string(8) "49_1.jpg"
  ["type"]=> string(10) "image/jpeg"
  ["tmp_name"]=> string(42) "C:\Bitnami\rubystack-2\php\tmp\phpEB17.tmp"
  ["error"]=> int(0)
  ["size"]=> int(78325)
}

 

Preparo mi formulario:

 

<form action="" method="post" enctype="multipart/form-data">
  <input name="archivo" type="file">
  <button class="btn btn-primary" type="submit">Subir archivo</button>
</form>

 

Nótese el atributo enctype, este es muy importante ya que es el que se encarga de que el archivo se envie.

 

Si estamos enviando más información en el formulario, esta deberá ser recuperada con $_POST, pero para los archivos debemos usar la variable $_FILES, a continuación mostraremos la información del archivo enviado.

 

<?php
if (isset($_FILES['archivo'])) {
        echo "<pre>";
        var_dump($_FILES['archivo']);
        echo "</pre>";
    }
?>

 

En este ejemplo se está estableciendo el nuevo nombre del archivo subido, por lo que si este archivo ya existe, será reemplazado por el nuevo. Si quieres un nombre diferente puedes usar el id auto incrementable de tu tabla con el cual está asociado el archivo, o bien generar un numero diferente para usar como nombre del archivo con uniqid();

 

Documentación oficial!

http://php.net/manual/es/reserved.variables.files.php

http://php.net/manual/es/features.file-upload.php

http://php.net/manual/es/function.basename.php

Código:

Otras formas de subir archivos!

http://soyprogramador.liz.mx/subiendo-archivos-con-jquery-y-php/

http://soyprogramador.liz.mx/obtener-la-extensin-de-un-archivo-subido-con-php/

http://soyprogramador.liz.mx/usando-uploadify-para-subir-archivos/

http://soyprogramador.liz.mx/subiendo-archivos-con-kumbiaphp-parte-1-3/

govani