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
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 ... MUUUUUUUUUCHO code ... /Size 316 /Root 313 0 R /Info 314 0 R /ID 315 0 R >> startxref 1199236 %%EOF ','','', 'application/pdf') 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
<?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){ } if ($bytes <1048576){ } if ($bytes>= 1048576){ } } //VERIFICAMOS QUE SE SELECCIONO ALGUN ARCHIVO echo "No se puede subir el archivo"; } // 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 //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 //VERIFICAMOS DE NUEVO QUE SE SELECCIONO ALGUN ARCHIVO if ( $archivo != "none" ){ //ABRIMOS EL ARCHIVO EN MODO SOLO LECTURA // VERIFICAMOS EL TAÑANO DEL ARCHIVO //LEEMOS EL CONTENIDO DEL ARCHIVO //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 //CERRAMOS EL ARCHIVO // 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 //SELECCIONAMOS LA BASE DE DATOS CON LA CUAL VAMOS A TRABAJAR CAMBIEN EL VALOR POR LA SUYA //EJECUTAMOS LA CONSULTA //CERRAMOS LA CONEXION //NOTIFICAMOS AL USUARIO QUE EL ARCHVO SE HA ENVIADO O REDIRIGIMOS A OTRO LADO ETC. echo "Archivo Agregado Correctamente<br>"; echo '<br ><br ><a href="formup.php">Subir Otro Archivo</a><br > '; }else{ echo "No fue posible subir el archivo"; echo '<br ><br ><a href="formup.php">Subir Otro Archivo</a><br > '; } ?>