Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2010, 13:58
nachoz
 
Fecha de Ingreso: octubre-2007
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 0
no me sube mas de 1MB a la BD

Chicos,

El siguiente formulario funcion correctamente subiendo archivos a la BD mysql, pero el problema se genera cuando el archivo sube de 1MB. El php.ini esta sobre los 64MB.

Este error entrega a mas de 1MB
Código CODE:
Ver original
  1. Query: INSERT INTO tbl_documentos ( titulo,nombre_archivo, descripcion, contenido, tamanio,tamanio_unidad, tipo ) VALUES ('ggg','tutorial-201.pdf', 'ggg','%PDF-1.3 %Äåòåë§ó ÐÄÆ 2 0 obj << /Length 1 0
  2. ...
  3. MUUUUUUUUUCHO code
  4. ...
  5.  /Size 316 /Root 313 0 R /Info 314 0 R /ID 315 0 R >> startxref 1199236 %%EOF ','','', 'application/pdf')
  6. Error: MySQL server has gone away

La idea seria que suba sin discriminación o en su defecto te diga que no puedes subir archivos de mas de 5Mb por poner un tamaño.


Código PHP:
Ver original
  1. <?php
  2. //ESTA FUNCION LA USAREMOS PARA OBTENER EL TAMAÑO DE NUESTRO ARCHIVO
  3. function filesize_format($bytes, $format = '', $force = ''){
  4.     $bytes=(float)$bytes;
  5.     if ($bytes <1024){
  6.         $numero=number_format($bytes, 0, '.', ',');
  7.         return array($numero,"B");
  8.     }
  9.     if ($bytes <1048576){
  10.         $numero=number_format($bytes/1024, 2, '.', ',');
  11.         return array($numero,"KBs");
  12.     }
  13.     if ($bytes>= 1048576){
  14.         $numero=number_format($bytes/1048576, 2, '.', ',');
  15.         return array($numero,"MB");
  16.     }
  17. }
  18. //VERIFICAMOS QUE SE SELECCIONO ALGUN ARCHIVO
  19. if(sizeof($_FILES)==0){
  20.     echo "No se puede subir el archivo";
  21.     exit();
  22. }
  23. // EN ESTA VARIABLE ALMACENAMOS EL NOMBRE TEMPORAL QU SE LE ASIGNO ESTE NOMBRE ES GENERADO POR EL SERVIDOR
  24. // 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
  25. $archivo = $_FILES["archivo"]["tmp_name"];
  26. //Definimos un array para almacenar el tamaño del archivo
  27. $tamanio=array();
  28. //OBTENEMOS EL TAMAÑO DEL ARCHIVO
  29. $tamanio = $_FILES["archivo"]["size"];
  30. //OBTENEMOS EL TIPO MIME DEL ARCHIVO
  31. $tipo = $_FILES["archivo"]["type"];
  32. //OBTENEMOS EL NOMBRE REAL DEL ARCHIVO AQUI SI SERIA foto.jpg
  33. $nombre_archivo = $_FILES["archivo"]["name"];
  34.  
  35. //PARA HACERNOS LA VIDA MAS FACIL EXTRAEMOS LOS DATOS DEL REQUEST
  36. extract($_REQUEST);
  37. //VERIFICAMOS DE NUEVO QUE SE SELECCIONO ALGUN ARCHIVO
  38. if ( $archivo != "none" ){
  39.     //ABRIMOS EL ARCHIVO EN MODO SOLO LECTURA
  40.     // VERIFICAMOS EL TAÑANO DEL ARCHIVO
  41.     $fp = fopen($archivo, "rb");
  42.     //LEEMOS EL CONTENIDO DEL ARCHIVO
  43.     $contenido = fread($fp, $tamanio);
  44.     //CON LA FUNCION addslashes AGREGAMOS UN \ A CADA COMILLA SIMPLE ' PORQUE DE OTRA MANERA
  45.     //NOS MARCARIA ERROR A LA HORA DE REALIZAR EL INSERT EN NUESTRA TABLA
  46.     $contenido = addslashes($contenido);
  47.     //CERRAMOS EL ARCHIVO
  48.     fclose($fp);
  49.     // VERIFICAMOS EL TAÑANO DEL ARCHIVO
  50.     if ($tamanio <1048576){
  51.         //HACEMOS LA CONVERSION PARA PODER GUARDAR SI EL TAMAÑO ESTA EN b ó MB
  52.         $tamanio=filesize_format($tamanio);
  53.     }
  54.    
  55.     //CREAMOS NUESTRO INSERT
  56.     $descripcion = nl2br($descripcion);
  57.     $qry = "INSERT INTO tbl_documentos ( titulo,nombre_archivo, descripcion, contenido, tamanio,tamanio_unidad, tipo ) VALUES
  58.     ('$titulo','$nombre_archivo', '$descripcion','$contenido','{$tamanio[0]}','{$tamanio[1]}', '$tipo')";
  59.    
  60.     //NOS CONECAMOS A LA BASE DE DATOS
  61.     //REMPLAZEN SUS VALOS POR LOS MIOS
  62.     mysql_connect("localhost","root","") or die("No se pudo conectar a la base de datos");
  63.    
  64.     //SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA
  65.     mysql_select_db("noticias");
  66.    
  67.     //EJECUTAMOS LA CONSULTA
  68.     mysql_query($qry) or die("Query: $qry <br />Error: ".mysql_error());
  69.    
  70.     //CERRAMOS LA CONEXION
  71.     mysql_close();
  72.     //NOTIFICAMOS AL USUARIO QUE EL ARCHVO SE HA ENVIADO O REDIRIGIMOS A OTRO LADO ETC.
  73.     echo "Archivo Agregado Correctamente<br>";
  74.     echo '<br ><br ><a href="formup.php">Subir Otro Archivo</a><br > ';
  75. }else{
  76.     echo "No fue posible subir el archivo";
  77.     echo '<br ><br ><a href="formup.php">Subir Otro Archivo</a><br > ';
  78. }
  79. ?>