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/
Hola, pregunta ¿Si quiero obtener la extensión del archivo que se sube? por que no solo subo jpg si no más archivos, ¿Cómo la obtengo y cómo la concateno? para que al final al mostrar la ruta del archivo me salga completa
//Si cambiar el nombre del archivo (se omite la linea anterior)
$nombre_archivo = “archivo_subido.jpg”;
//Si queremos un nombre diferente para nuestro archivo
// Teniendo en cuenta que todos los arhcivos con *.jpg
$nombre_archivo = uniqid().”.jpg”;