Este Howto es acerca de como subir archivos atravez de PHP y guardarlos en MySQL asi como la extracción del archivo de MySQL atravez de PHP.

Requisitos:

  • Tener instalado PHP y MySQL.
  • Conocimientos basicos de PHP y MySQL.

Muchas veces necesitamos darle a los usuarios la facilidad de poder “subir” o guardar archivos en una base de datos y n es tan dificil como aparenta asi que comenzemos….

Primeramente necesitamos el diseño de la tabla

Imagen diseño de tabla para subir archivos con PHP y MySQL

y el script para crear la tabla es:

CREATE TABLE tbl_documentos (
id_documento INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
titulo VARCHAR(150) NULL,
descripcion MEDIUMTEXT NULL,
contenido LONGBLOB NULL,
tamanio INTEGER UNSIGNED NULL,
tipo VARCHAR(150) NULL,
nombre_archivo VARCHAR(255) NULL,
tamanio_unidad VARCHAR(150) NULL,
PRIMARY KEY(id_documento)
);

Explico un poco cada campo para darnos una mayor idea:

  • id_documento es el identificador o llave primaria
  • titulo contiene titulo para el documento
  • descripción contiene la descripcion del documento
  • contenido en este campo en donde se guardara nuestro documento
  • tamamio en este campo guardamos el tamaño del documento
  • tipo contendra el tipo MIME del documento
  • nombre_archivo contendra el nombre del documento
  • tamanio_unidad en este campo registraremos si la medida esta em kb,MB,GB

Ahora necesitamos un formulario
Aqui esta el codigo del archivo form.html:

<form id="test_upload" name="test_upload" action="upload.php" enctype="multipart/form-data" method="post">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
Titulo
</td>
<td>
<input type="text" id="titulo" name="titulo"/>
</td>
</tr>
<tr>
<td colspan="2">
Descripcion
</td>
</tr>
<tr>
<td colspan="2">
<textarea id="descripcion" name="descripcion" cols="50" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
Archivo <input type="file" id="archivo" name="archivo"/>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Registrar Documento"/>
</td>
</tr>
</table>
</form>

Al formulario debemos como todos debe tener sus atributos
action que indica el archivo que sse encargara de procesar la información que le enviemos
y method que indica si los datos seran enviados por POST o GET para envio de archivos es obligatorio marcarlo como POST
adicinal a estos atributos debemos especificar enctype con el valor multipart/form-data para que se pueda realizar el envio.
Y aqui esta el codigo del archivo upload.php

< ?php
//ESTA FUNCION LA USAREMOS PARA OBTENER EL TAMAÑO DE NUESTRO ARCHIVO
function filesize_format($bytes, $format = '', $force = ''){
$bytes=(float)$bytes;
if ($bytes< 1024){
$numero=number_format($bytes, 0, '.', ',');
return array($numero,"B");
}
if ($bytes< 1048576){
$numero=number_format($bytes/1024, 2, '.', ',');
return array($numero,"KBs");
}
if ($bytes>= 1048576){
$numero=number_format($bytes/1048576, 2, '.', ',');
return array($numero,"MB");
}
}
//VERIFICAMOS QUE SE SELECCIONO ALGUN ARCHIVO
if(sizeof($_FILES)==0){
echo "No se puede subir el archivo";
exit();
}
// EN ESTA VARIABLE ALMACENAMOS EL NOMBRE TEMPORAL QU SE LE ASIGNO ESTE NOMBRE ES GENERADO POR EL SERVIDOR
// ASI QUE SI NUESTRO ARCHIVO SE LLAMA foto.jpg el tmp_name no sera foto.jpg sino un nombre como SI12349712983.tmp por decir un ejemplo
$archivo = $_FILES["archivo"]["tmp_name"];
//Definimos un array para almacenar el tamaño del archivo
$tamanio=array();
//OBTENEMOS EL TAMAÑO DEL ARCHIVO
$tamanio = $_FILES["archivo"]["size"];
//OBTENEMOS EL TIPO MIME DEL ARCHIVO
$tipo = $_FILES["archivo"]["type"];
//OBTENEMOS EL NOMBRE REAL DEL ARCHIVO AQUI SI SERIA foto.jpg
$nombre_archivo = $_FILES["archivo"]["name"];
//PARA HACERNOS LA VIDA MAS FACIL EXTRAEMOS LOS DATOS DEL REQUEST
extract($_REQUEST);
//VERIFICAMOS DE NUEVO QUE SE SELECCIONO ALGUN ARCHIVO
if ( $archivo != "none" ){
//ABRIMOS EL ARCHIVO EN MODO SOLO LECTURA
// VERIFICAMOS EL TAÑANO DEL ARCHIVO
$fp = fopen($archivo, "rb");
//LEEMOS EL CONTENIDO DEL ARCHIVO
$contenido = fread($fp, $tamanio);
//CON LA FUNCION addslashes AGREGAMOS UN \ A CADA COMILLA SIMPLE ' PORQUE DE OTRA MANERA
//NOS MARCARIA ERROR A LA HORA DE REALIZAR EL INSERT EN NUESTRA TABLA
$contenido = addslashes($contenido);
//CERRAMOS EL ARCHIVO
fclose($fp);
// VERIFICAMOS EL TAÑANO DEL ARCHIVO
if ($tamanio <1048576){
//HACEMOS LA CONVERSION PARA PODER GUARDAR SI EL TAMAÑO ESTA EN b ó MB
$tamanio=filesize_format($tamanio);
}

//CREAMOS NUESTRO INSERT
$qry = "INSERT INTO tbl_documentos ( titulo,nombre_archivo, descripcion, contenido, tamanio,tamanio_unidad, tipo ) VALUES
('$titulo','$nombre_archivo', '$descripcion','$contenido','{$tamanio[0]}','{$tamanio[1]}', '$tipo')";

//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");

//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");

//EJECUTAMOS LA CONSULTA
mysql_query($qry) or die("Query: $qry <br />Error: ".mysql_error());

//CERRAMOS LA CONEXION
mysql_close();
//NOTIFICAMOS AL USUARIO QUE EL ARCHVO SE HA ENVIADO O REDIRIGIMOS A OTRO LADO ETC.
echo "Archivo Agregado Correctamente<br />";
echo 'Subir Otro Archivo<br /> ';
}else{
echo "No fue posible subir el archivo";
echo 'Subir Otro Archivo<br /> ';
}
?>

Ahora que ya tenemos nuestro script funcionando y podemos hacer los uploads que queramos vamos
hacer que se puedan explorar y descargar o mostrar en caso de que sea una imagen.
Primero creamos un archivo que nos imprima el contenido del documento y el tipo del mismo para poder renderizarlo
con este archivo que llamaremos getfile.php

< ?php
//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");

//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");

//CONSTRUIMOS LA CONSULTA PARA OBTENER EL DOCUMENTO
$qry="Select * from tbl_documentos where id_documento={$_REQUEST['id_documento']}";
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
$obj=mysql_fetch_object($res);

//OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
header("Content-type: {$obj->tipo}");

//OBTENEMOS EL NOMBRE DEL ARCHIVO POR SI LO QUE SE REQUIERE ES DESCARGARLO
header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');

//Y PO ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
print $obj->contenido;

//CERRAMOS LA CONEXION
mysql_close();
?>

Posteriormente crearemos un archivo para que nos liste los documentos registrados y
detecte si es una imagen en este caso imprimiremos un tag img y su src sera nuestro archivo getfile.php
cuando incluimos un archivo con php podemos pasarle parametros cono si se tratara de un query string del browser asi que le pasaremos el id_documento
para que nos muestre el archivo solicitado.
Este es e código de nuestro archivo list.php

< ?php
//NOS CONECAMOS A LA BASE DE DATOS
//REMPLAZEN SUS VALOS POR LOS MIOS
mysql_connect("localhost","root","12345") or die("No se pudo conectar a la base de datos");

//SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
mysql_select_db("test");

//CONSTRUIMOS EL QUERY PARA OBTENER LOS ARCHIVOS
$qry="select
docs.*,
CASE docs.tipo
WHEN 'image/png' then
'image'
WHEN 'image/jpg' then
'image'
WHEN 'image/gif' then
'image'
WHEN 'image/jpeg' then
'image'
ELSE
'file'
END as display
from tbl_documentos AS docs";

//EJECUTAMOS LA CONSULTA
$res=mysql_query($qry) or die("Query: $qry ".mysql_error());

//RECORREMOS LA CONSULTA
//*********NOTA DONDE DICE alt='$obj-/>titulo' QUITA LA BARRA PARA QUE QUEDE ASI:
// alt='$obj->titulo'
// EL WORDPRESS ME ESTA REMPLAZANDO EL CODIGO

while ($obj=mysql_fetch_object($res)) {
//SI EL TIPO DE DOCUMENTO ES UMAGEN LA MOSTRAMOS SI NO SOLO HACEMOS EL LINK
switch ($obj->display){
case "image":
echo "<div>
<a href='getfile.php?id_documento={$obj->id_documento}'>
<img alt='$obj-/>titulo' src='getfile.php?id_documento={$obj->id_documento}'/>
</a>
</div><hr />";
break;
case "file":
echo "<div>
<a href='getfile.php?id_documento={$obj->id_documento}'>$obj->titulo</a>
</div><hr />";
break;
}

}

//CERRAMOS LA CONEXION
mysql_close();
?>

Ahora solo abrimos nuestro explorador con loas sigueintes direcciones:

  • http://url_deprueba/form.html -> Veremos nuestro formulario de subida
  • http://url_deprueba/list.php -> Veremos el listado de nuestros documentos

Descargar los archivos del howto de este

Y con esto terminamos este pequeño howto de como manejar archivos con php y MySQL
espero les sirva y cualquier comentario queja o sugerencia porfavor haganla saber asi como alguna duda que tengan y se pueda convertir en un howto
sera tomada en cuenta.
Cudense …

79 Respuestas para “Manejo de archivos con PHP y MySQL”

  1. dulce
    desde Mexico Dijo:

    hola, tengo un codigo similar a este, al borrar tengo un problema ya no puedo agregar mas, lo borro con un simple delete si no con que mas ??

    muchas gracias :D

    Responder

  2. Ruben Omar
    desde Mexico Dijo:

    Hola gracias por comentar…
    Como estas borrando las filas? yo lo hago con un simple :
    [php]
    $strSQLBorrar=”DELETE FORM documentos where id_documento=$id_doc”;
    mysql_query($strSQLBorrar);
    [/php]

    Responder

  3. Pablo [masTecno]
    desde Argentina Dijo:

    Muy inytersantel; esta como para archivar :)

    Responder

  4. cecilia
    desde Chile Dijo:

    Parse error: syntax error, unexpected ‘;’ in D:\servidor\web\test\upload.php on line 5

    ilinea 5 : if ($bytes <1024){

    Responder

  5. Ruben Omar
    desde Mexico Dijo:

    Ups perdon fue un fallo del coloreador de sintaxis checalo nuevamente porfavor

    Responder

  6. frehd
    desde Spain Dijo:

    Hola queria saber cual es el tamaño maximo permitido para cada archivo.
    Soy nuevo en esto de la programacion y la verdad que te agradezco por compartir tus conocimientos. :-)

    Responder

  7. Ruben Omar
    desde Mexico Dijo:

    frehd:

    Gracias por el comentario mira acabo de escribir un pequeño articulo echale un vistazo:

    http://blog.deliriumlabs.net/2008/03/20/php-snippet-max-upload-file-size/

    Responder

    MAucker February 1st, 2011 9:13 am

    MAucker desde Chile Dijo:

    Página no encontrada

    Responder

  8. voodoo
    desde Argentina Dijo:

    Hola:
    tu articulo esta muy bien explicado.
    Hace un tiempo puse en mi blog un articulo sobre este tema
    http://fabianperez.blogspot.com/2007/11/php-y-mysql-manejo-de-bases-de-datos.html
    pero debo decir que tu explicacion es muy clara. Ademas noto que tienes gran conocimiento del tema y que respondes a los comentarios para ayudar.
    Felicitaciones

    Responder

  9. Ruben Omar
    desde Mexico Dijo:

    1000 gracias por los comentarios :D, que al fin estamos para ayudarnos entre todos

    Responder

  10. bettencourt
    desde Spain Dijo:

    Buenas viendo este ejemplo me gustaría preguntarte algo para saber si es posible realizarlo en php, veo que aquí archivas un documento en php, ves su tamaño y lo visionas en caso de que sea una foto, podrias visionarlo si fuera un documento y luego de alguna forma guardarlo en un array de strings para poder realizar busquedas sobre ese documento?, gracias por adelantado.

    Responder

  11. Ruben Omar
    desde Mexico Dijo:

    A que te refieres con visionarlo?
    Obtener el contenido?

    Responder

  12. Titux
    desde Mexico Dijo:

    Que tal, primero que nada, quisiera saber que quieres decir con VISIONAR, despúes, que es lo que quieres hacer en general.

    Saludos…

    Responder

  13. bettencourt
    desde Spain Dijo:

    el visionar o no realmente me da lo mismo, lo ke intento es poder meter el contenido de un documento de texto, en un array de strings, de forma que pueda realizar busquedas sobre ese documento

    Responder

    Ruben Omar April 30th, 2008 12:52 pm

    Ruben Omar desde Mexico Dijo:

    Ok dejame ver si ya entendi el procedimiento que quieres es asi:

    1.- Subir un archivo de texto solo podra ser con un .TXT.
    2.- Leer el contenido del archivo y guardarlo en el campo de una tabla.
    3.- Guardar el archivo en binario.

    Ya con esto se podra hacer un formulario de busqueda para para que muetre una lista de los archivos que muetren el criterio de busqueda.

    Es esto lo que quieres hacer?
    Corrigeme si me equivoco.

    Responder

  14. bettencourt
    desde Spain Dijo:

    es mas o menos eso si lo ke no entiendo por ke los guardaras en binario y una pekeña apreciacion los criteriios de busqueda se los dare yo, no seran por formulario debe ser totalmente automatico y mostrara el texto que viene detras de la palabra ke anda buscando, pero si es eso ke tu dices, no te ekivocas, lo ves posible de hacer? podrias guiarme para dar esos primeros 3 pasos?, gracias de antemano, bye

    Responder

  15. Ruben Omar
    desde Mexico Dijo:

    OK. claro que es posible, el proximo viernes públicare el articulo enfocado exactamente en este procedimeinto.

    Saludos

    Responder

  16. Ruben Omar
    desde Mexico Dijo:

    Otra cosa tendras algun archivo de texto de ejemplo que me puedas proporcionar?

    Responder

  17. bettencourt
    desde Spain Dijo:

    Joder, no sabes cuanto te lo agradeceria si lo pudieras hacer me un grandisimo favor, supongo ke si ke te puedo pasar algo ke te sirva como ayuda, pero por donde te lo paso?

    Responder

  18. Ruben Omar
    desde Mexico Dijo:

    Enviamelo a mi direccion de correo: deliriumlabs@deliriumlabs.net

    Responder

  19. jessy
    desde Spain Dijo:

    Muy buen artículo.
    Me ha sido de gran ayuda ;)

    Responder

  20. Lucho
    desde Argentina Dijo:

    Muy bueno! Me ha sido de mucha utilidad. Ahora… disculpen mi ignoracia, ya que no sé mucho del tema, pero donde se alojarían los archivos que se suben…?

    Responder

  21. Ruben Omar
    desde Mexico Dijo:

    En este tutorial lo estamos alojando en la base de datos

    Responder

  22. facu
    desde Argentina Dijo:

    Hola amigo, muy bueno el articulo, queria hacer una pregunta, si tienes algun articulo o puedes hacer uno, donde se almacene una imagen jpg por ejemplo, en una carptea del servidor y en la base de datos se almacene solo la ruta de dicha imagen, un saludo!!

    Responder

  23. JUANCHO
    desde Colombia Dijo:

    Muy claro, lo probare a ver que tal.

    Responder

  24. SpiderNet
    desde Venezuela Dijo:

    Hola………….Excelente!!!

    Esta muy bien explicado el tutorial.

    Pero tengo un problemita al ejecutar el archivo getfile.php me da el siguiente error

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1 qry::Select * from tbl_documentos where id_documento=

    Uso la versión 5.0.5.1a de MySQL.

    La parte de subir archivos no dio ningun error, pero este (getfile.php) si.

    Que podría estar pasando???

    Saludos!!!
    Espero puedas ayudarme

    Responder

    Ruben Omar October 28th, 2008 10:59 am

    Ruben Omar desde Mexico Dijo:

    Hola, disculpas por la tardanza en contestar.
    Al parecer es solo que no estas enviando la variable id documento. si me pudieras enviar tus archivos y te los reviso.

    Responder

  25. Ildefonso
    desde Mexico Dijo:

    esta bien tu codigo, pero como le hago para ver el archivo y subi, o algo asi

    Responder

    Ruben Omar October 28th, 2008 11:03 am

    Ruben Omar desde Mexico Dijo:

    Hola, en el tutorial tambien explico como crear el archivo list.php

    Responder

  26. Manuel
    desde Peru Dijo:

    Muy interesante

    Responder

    Ruben Omar November 20th, 2008 9:41 am

    Ruben Omar desde Mexico Dijo:

    Gracias

    Responder

  27. Mig
    desde Mexico Dijo:

    De pok, gracias Mister fue muy util

    Responder

  28. lamek
    desde Spain Dijo:

    Hola, me da un error en la linea 49 del archivo upload.php
    Dice esto.:

    Parse error: syntax error, unexpected ‘;’ in C:wampwwwupload.php on line 49

    A que se debe?

    Responder

    Ruben Omar December 1st, 2008 9:23 am

    Ruben Omar desde Mexico Dijo:

    enviame tu archivo a blog@deliriumlabs.net para checarlo

    Responder

    lamek December 1st, 2008 9:29 am

    lamek desde Spain Dijo:

    Ok.

    Responder

    Ruben Omar December 1st, 2008 10:04 am

    Ruben Omar desde Mexico Dijo:

    Ya encontre el detalle en la linea 49 del archivo upload

    $tamanio <10485760000

    reemplaza $lt por <
    el wordpress me remplazo el caracter por eso no te esta funcionando

  29. edgardo
    desde Argentina Dijo:

    hola la verdad me facilitaste mucho las cosas, por que tenia miedo por seguridad de abrirles un camino a los tantos que pierden tiempo dañando sitios haciendo un upload comun al servidor.

    Muchas gracias de enserio !!!!

    Ahora al final con el error del getfile.php que paso ?? por que a mi me sale tambien.. debe ser por el tipo de servidor no soporta la syntax

    Error:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1 qry::Select * from tbl_documentos where id_documento=

    Codigo del getfile:

    tipo}”);

    //OBTENEMOS EL NOMBRE DEL ARCHIVO POR SI LO QUE SE REQUIERE ES DESCARGARLO
    header(‘Content-Disposition: attachment; filename=”‘.$obj->nombre_archivo.’”‘);

    //Y PO ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
    print $obj->contenido;

    //CERRAMOS LA CONEXION
    mysql_close();
    ?>

    Desde ya muchas gracias..

    Responder

    Ruben Omar December 15th, 2008 9:28 am

    Ruben Omar desde Mexico Dijo:

    Solo debes asegurate que estas enviando la variable id_documento ya sea por medio de GET en un link o POST en un formulario

    Responder

  30. Mike
    desde Mexico Dijo:

    Gracias por este ejemplo muy buena la explicación.

    me sirvió bastante, se me aclararon varias dudas.

    Responder

  31. milito88
    desde Colombia Dijo:

    Uyyyy q buen articulo este me acabas de salvar de un rollo grandisimo

    Responder

  32. jtaquichiri
    desde Bolivia Dijo:

    Funciona con archivos menor a 2 mb cuando subo un archivo mayor a 2 mb no funciona tengo que cambiar algo en el script o cambiar la configuracion de mysql o php uso php uso el appserver

    Responder

  33. Anthraxnet
    desde Spain Dijo:

    Enhorabuena por tu tutorial, me parece muy completo y muy bueno, pero me da el problema que al ejecutarlo me da un error de Apache y se me cierra, no se si puede deberse a un error en el script o hay algo que debo cambiar pero me interesaría muchisimo saber cual es el problema ya que otras páginas dentro del mismo site, me funcionan perfectamente.
    Gracias y un saludo

    Responder

    Ruben Omar December 21st, 2009 2:13 pm

    Ruben Omar desde Mexico Dijo:

    Hola que error te marca?

    Responder

    Anthraxnet December 22nd, 2009 2:36 am

    Anthraxnet desde Spain Dijo:

    Segun el log del apache me sale lo siguiente
    [Tue Dec 22 09:32:38 2009] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/favicon.ico
    [Tue Dec 22 09:32:41 2009] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/favicon.ico
    [Tue Dec 22 09:33:05 2009] [notice] Parent: child process exited with status 3221225477 — Restarting.
    y como te comento se cierra. Esto me pasa con todas las paginas que se dedican al manejo de archivos que saque de tu tutorial.

    Responder

  34. austin
    desde Peru Dijo:

    Muy buena info amigo, podria poner un tutorial como guardar el archivo fuera de la db y en la bd solo la ruta al archivo??

    gracias
    salu2

    Responder

  35. Constanza
    desde Dijo:

    No solo quiero felicitarte, si no darte las gracias, me has sido de gran ayuda ya que estoy en mis inicios del tratamiento web i sql

    Responder

  36. maguis0401
    desde Mexico Dijo:

    gracias me fue de mucha ayuda pero me gustaria saber como eliminarlos

    Responder

  37. trackker
    desde Guatemala Dijo:

    excelente articulo lo utilize y me funciono de 100 .. pero ahora tengo una pregunta , como podria eliminar cada archivo subido? y tambien como puedo hacer que cada archivo se muestre en una pagina aparte. gracias de antemano y espero tu respuesta.

    PD: Excelente!

    Responder

  38. Jhon
    desde Dijo:

    Muy Bueno, Gracias Amigo…Funciona Bien..

    Responder

  39. jose
    desde Mexico Dijo:

    Será que puedas hacerme un grandisimo favor? que al codigo que desarrollaste le agregues el calificador de cada archivo? es decir, para que los usuarios puedan votar por cada archivo.

    Responder

  40. emiliano
    desde Dijo:

    tengo un problema, utilizando el codigo q subiste cuando quiero descargar el archivo desde la base de datos me lo descarga, pero me lo descarga dañado y no me deja abrirlo, por que podra ser esto?

    el tamaño del archivo me lo lee bien en el upload.php, pero luego de hacer el $contenido=fread() y hacer un echo strlen($contenido) el tamaño es distinto (y lo hago antes del addslashes). Podra ser este el problema?

    Desde ya muchas gracias

    Responder

  41. Felipe
    desde Dijo:

    Hola, felicitaciones por tu labor. Estoy tratando de hacer funcionar el asunto pero me sale el mismo error que a otros acá : “at line 1 qry::Select * from tbl_documentos where id_documento=” y no se que hacer, espero me ayudes. Muchas Gracias.

    Responder

  42. pako
    desde Mexico Dijo:

    que ondas, soy nuevo en el uso de php y mysql, he checado tu tutorial y al mandar el archivo no se guarda en la base de datos sino que me manda a guardar el script upload.php, es decir, se abre un cuandro como cuando descargas un archivos.

    Si pudieses decirme en que estoy mal, porfavor.

    Gracias

    Responder

  43. David Castañopn
    desde Mexico Dijo:

    Hola Ruben.

    Muy interesante tu articulo, Quisiera realizarte una consulta, quiero hacer un sistema en php que funcione como un repositorio de documentos de diferentes áreas de una empresa. Que me recomiendas? almacenarlos como archivos en una carpeta del sistema y los scripts php accedan a estos archivos ó almacenarlos en mysql y acceder a ellos con querys?

    Gracias.

    Responder

  44. German
    desde Dijo:

    Hola Ruben,

    muchas gracias por tu script, esta muy bien explicado, solo tengo un problema cuando abro los archivos que tengo guardados en mi base de datos, ya sean fotos, pdf o word me dice que el documento esta dañado y no me muestra el contenido, a que se de esto?

    Gracias

    Responder

  45. Diego
    desde Dijo:

    Buenísimo! te felicito . excelente articulo.
    de paso te pregunto si podes publicar la parte de eliminar los registros!.

    y se podría llegar a listar (list.php)como:
    fecha / Título:
    Descripción:
    descargar (con el link?

    gracias de ante mano!

    Responder

  46. Inamsay
    desde Mexico Dijo:

    est muy bien tu tutorial ya lo he realizado y corre muy bien con todos los archivos exepto al subir una imagen solo guarda el nombre del archivo y un valor null en el campo archivo erchivo de la bd…
    este es el error

    Warning: fread(): supplied argument is not a valid stream resource in C:\wamp\www\upload.php on line 42

    Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\upload.php on line 47
    Archivo Agregado Correctamente
    Subir Otro Archivo

    ——————–
    ….. a donde se van los archivos directamente ala base de datos o en alguna carpeta???

    Responder

  47. Inamsay
    desde Mexico Dijo:

    Y entonces al abrir la pajina de list… muestra todos los archivos almacenados… menos los que sean de algun tipo de iamgen..

    Responder

  48. Cori
    desde Mexico Dijo:

    excelente me sirvio mucho… pero y si en un momento dado quiero descargar el archivo en automatico…. en lugar de que me liste los que hay??

    Responder

  49. Natividad
    desde Mexico Dijo:

    Esta super bien el codigo en verdd me saco de apuros no lle al punto que quiero llegar, en este codigo encontre como guardar las imagenes … pero al punto que quiero llegar es el que me muestre un documento pdf, excel … es lo que ahora mas me interesaria saber he buscado pero no comprendo aun .. helme plis!!!! ojala me pueda ayudar!!!

    Responder

  50. laura
    desde Mexico Dijo:

    esta interesante el how to…. y aplica tambien para documentos?? porque solo mencionas imagen :D

    Gracias!

    Responder

  51. Yamil
    desde Mexico Dijo:

    woww!! muchas gracias estaba buscando algo asi desde hace demasiado teiempo! mil gracias por tu aportacion!

    Responder

  52. Mariana JC
    desde Venezuela Dijo:

    hola, necesito ayuda… aunque no se si pueda en estos momentos, estoy desarrollando un sistema que aparte que me pueda guardar en la base de datos los registro de excel, me lea los campos del archivo para luego mostrarlos… es un sistema de gps. donde yo descargo los registro de las alarmas por excel y los almaceno en la base de datos. tu sistema me ha ayudado de mucho pero ahora necesito de tu ayuda para leer los campos de latitud y longitud para luego mostrarlo por googlemaps…
    y gracias por la ayuda y los archivos que haz compartido, están muy bien explicados y sencillos.

    Responder

  53. Carlos
    desde Mexico Dijo:

    buenas tardes antes quenada felicitarte por tu articulo es muy bueno, de mi parte tengo una duda al cargar el archivo me envia la quiery muchos simbolos y al final me despliega este error ya le he estado buscando y no le encuentro agradeceria mucho de tu parte si me pudieses apoyar con esto gracias.

    Responder

  54. Gilberto Gonzalez
    desde Mexico Dijo:

    Como le haces para manejar un campo mysql mediumtext muy grande, en mi caso guardo en ese campo informacion de un RTF y las imagenes se guardan en puros caracteres pero la consulta se vuelve muy pesada

    Que opinas?

    Responder

  55. vanina
    desde Argentina Dijo:

    Hola te hago una consulta, yo necesito hacer una pagina de carga de curriculum, en el que se envia (a parte de los datos) el curriculum en pdf o word, pero en este caso cuendo subo un archivo en word me crea conflictos, es decir no se sube, abre el archivo directamente en el explorador…

    Responder

  56. ernesto
    desde Dijo:

    $contenido = addslashes($contenido);
    //CERRAMOS EL ARCHIVO
    fclose($fp);
    // VERIFICAMOS EL TAANO DEL ARCHIVO if ($tamanio 10485760000){
    //HACEMOS LA CONVERSION PARA PODER GUARDAR SI EL TAMAO ESTA EN b MB
    $tamanio=filesize_format($tamanio);
    }

    Responder

    ernesto February 14th, 2012 1:04 pm

    ernesto desde Dijo:

    CUAL SERA EL PROBLEMA AHI. ?

    Responder

  57. Armando
    desde Dijo:

    Que excelente post muy completo… una pregunta, quisiera saber si es pocible cargar las imagenes desde un scaner directamente a la base de datos sin guardarla antes memoria física, ya que tendriamos duplicacion de imagenes
    en la BDs y en disco, te agradeceria si me despejas de esta duda…

    Responder

  58. pablo
    desde Dijo:

    muchas gracias amigo ya andaba yo preguntando como podía hacer eso pero ya encontré como solo tienes que agregar esto a tu .htaccess tiene que quedar de la forma que les presento abajo fue la única que me funciono…saludo desde http://www.mp3letras.com

    #set max upload file size
    php_value upload_max_filesize 20M

    #set max post size
    php_value post_max_size 20M

    # Do not remove this line, otherwise mod_rewrite rules will stop working
    RewriteBase /

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    Responder

  59. Jose
    desde Dijo:

    Esta muy bueno Gracias me has ayudado mucho…

    Responder

  60. siz
    desde Guatemala Dijo:

    hola…mira soy nueva en esto..please ayuda
    me sale error en la linea 35 del upload.php..
    que es unexpected ‘<' on line 35

    Responder

  61. Jorge
    desde Bolivia Dijo:

    Una consulta, caso no quiera guardar el archivo en un blob y lo quiera guardar en una direccion de directorio dentro del servidor mismo, esto es posible en php? no seria mas sencillo manejarlo asi? pregunto porque estuve investigando sobre el tema y lei que es problematico guardar ciertos archivos en los campos blob, y justamente uno de ellos son los .doc que son los que yo quisiera guardar, alguna recomendacion para solucionar este problema, muchas gracias por la ayuda

    Responder

  62. Gonzalo
    desde Uruguay Dijo:

    Excelente artículo.Yo estoy tratando de construier una bd que contendría entre otros datos direcciones IP.
    Los datos orginalmente los tengo en planillas excel
    La idea es poder consultar, obtener y verificar que tal IP está usada o no y si no está usada poder asignarsela a un determiando equipo. Tambien hacer consultas, ingresar datos, etc todo centralizado de una pagina web accesible por intranet.
    La idea que estoy manejando es leer los datos desde la planilla de excel emplenado phpExcel y guardar toda la informacion obtenida en una bd mysql.
    Estoy en la etapa de diseño. Cual sería el mejor formato para cargar direcciones IP en la bd, para que despues me permita hacer una busqueda con pìng, etc desde el servidor
    Desde ya gracias y saludos

    Responder

    diego May 28th, 2012 4:47 pm

    diego desde Dijo:

    No probaste con un DNS server?

    Responder

  63. SEBASTIAN
    desde Chile Dijo:

    hola.. esta buebisimo tu articulo,pero quiero preguntarte si es pocible que alado del archivo que se muestra en la lista se pueda tambien mostrar la descrippcion que guardanos al subir,de antemanos muchas gracias

    Responder

  64. juegos inflables
    desde Chile Dijo:

    realmente no entendi nada ….pero igual me parecio interesante

    Responder

  65. Nicolas
    desde Dijo:

    Hola! Muy bueno el ejemplo! Una pregunta….como hago para volcar tambien el contenido del .txt a una tabla?
    Yo necesito importar un txt o csv y volcar los datos en mi tabla?
    Espero puedas ayudarme.
    Gracias

    Responder

  66. Jairo
    desde Dijo:

    Hey muchas gracias justo la solución que estaba buscando. excelente aporte.

    Responder

Responder