Foros del Web » Programando para Internet » PHP »

Max_file_size

Estas en el tema de Max_file_size en el foro de PHP en Foros del Web. Tengo instalado en windows apache, mysql y php, necesito hacer un upload a la base de datos, todo esto me funciona perfecto, pero tengo un ...
  #1 (permalink)  
Antiguo 06/08/2003, 18:08
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
Pregunta Max_file_size

Tengo instalado en windows apache, mysql y php, necesito hacer un upload a la base de datos, todo esto me funciona perfecto, pero tengo un problema cuando el archivo que almaceno en la base de datos es de mas de 900 kilos + -.

He cambiado la configuiración en php.ini para darle mas tamaño a los upload, pero de tedos modos no acepta subir archivos de mas de 900 k.

Alguien sabe como aumentar eso.

A proposito, en que incede el campo MAX_FILE_SIZE en un formulario con respecto a la configuración del servidor ?
  #2 (permalink)  
Antiguo 06/08/2003, 18:22
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
a ver, explica bien como haces el upload, pork el upload no se hace a la base de datos a menos k lo transformes a codigo de maquina o binario y luego lo desifres al sacarlo, lo k yo creo k haces es subir un archivo al servidor y almacenar en la base de datos la ruta, o me equivoco??

Podrias explicarte un poco mas. En todo caso, aca te dejo un ejemplo k se usa esta opcion y esta sacado directo del manual

<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 06/08/2003, 19:36
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
1.-
Subo los datos a la base de datos mysql en:
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO lg_apuntes_clases (description,bin_data,filename,filesize,filetype,f echa,id_tipo_curso,id_tipo_materia,id_profesor) ".
"VALUES ('$form_description','$data','$form_data_name','$f orm_data_size','$form_data_type','$fecha','$id_tip o_curso','$id_tipo_materia','$id_profesor')");

2.- Luego los leo con:

$query = "select bin_data,filetype from lg_apuntes_clases where id=$id";
$result = @MYSQL_QUERY($query);

$data = @MYSQL_RESULT($result,0,"bin_data");
$type = @MYSQL_RESULT($result,0,"filetype");

Header( "Content-type: $type");
echo $data;

3.- Todo funciona bien, lo que pasa es que necesito aumentar la capacidad de almacenamiento de los archivos en la base de datos.

como lo hago ?
  #4 (permalink)  
Antiguo 06/08/2003, 21:40
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
umm, que pasada, no... osea subes el fichero entero a mysql... aun registro.... umm, y por casualidad mysql no tiene un tamaño limite en los registros....???, a mi entender que no es mucho, mysql permite que un registro ocupe mas de 900k, pedazo de registro... en txt seria casi un libro entero... voy a investigar... me pica la curiosidad, ahora te cuento... aver si me entero.
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 06/08/2003, 21:57
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
Yo almaceno el resgistro en un campo longblob, que se supone tiene capacidad para esto. Ignoro si mysql tiene algun límite en tiempo o espacio.

Esto es para un sistema de almacenamiento de distintos tipos de archivos para profesores, xls, ppt, doc, zip, etc.

Todo anda bien con archivos mas livianos, pero...

Gracias por sus comentarios.
  #6 (permalink)  
Antiguo 06/08/2003, 23:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si haces un phpinfo() a tu servidor .. verás algúnos límites sobre el "upload" máximo que puedes hacer ..

Fijate en directivas como:
upload_max_filesize
post_max_size

E incluso del:
max_execution_time
max_input_time (esta última salió en PHP 4.3.0 en adelante si mal no recuerdo ..)


Eso por la parte de PHP .. Por la parte de Mysql .. también tiene limitaciones -> www.mysql.com si quieres verlas (ahora no recuerdo bien donde o cuales son ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 06/08/2003, 23:27
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
upload_max_filesize
post_max_size

estan en 25M

max_execution_time lo controlo en el script con set_time_limit(0)
max_input_time tengo una versión anterior

puede ser que el tema este en el mysql...
  #8 (permalink)  
Antiguo 06/08/2003, 23:28
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
ha, y MAX_FILE_SIZE está en 25000000
  #9 (permalink)  
Antiguo 07/08/2003, 00:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm ... Y el efecto de que "no sube el archivo" .. cual es exactamente:

* Algún error de PHP (por ejemplo de tiempo de ejecución ..?)
* Sube parcialmente el archivo (fijate los tamaños exactos que quedan los archivos en tus campos "binarios" ..)
* otro? ..

Como ..bien dices los campos "LONGBLOB" te debería sobrar .. pues el problema en principio no parece ser de limitaciones de PHP (en la configuracion) y .. sobre el MAX_blabla del formulario .. al parecer está usado correctametne (antes del campo file) y de valor suficiente (si no me fallan las gafas xD)...

Otro detalle ..

Usa en tu mysql_query() ..
Código PHP:
$result=mysql_query(....) or die(mysql_error()); 
Para ver si se produce algún error de Mysql (por ejemplo si te has pasado de la limitación que tenga configurado tu Mysql .. )


Un saludo,

pd: Mira la configuración de Mysql .. y si es necesario ajustala .. y chequea los comentarios de los usuarios del tema "upload" en php.net:
http://www.php.net/manual/en/features.file-upload.php
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 07/08/2003, 00:33
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
Ok

Use or die... y me arrojó

MySQL server has gone away

No se mucho de Mysql... Porque razón podría ocurrir esto ?
  #11 (permalink)  
Antiguo 07/08/2003, 08:41
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
Ya está resuelto por si a alguien le interesa.

La solución pasa por separar el archivo data en otra tabla y almacenarlo por partes para luego rescatarlo por partes, de lo contrario Mysql no lo soporta al menos en windows. Con esta solución logre dejar archivos de hasta 15 megas en la base de datos.

Dejo el script por si a alguien le interesa:

set_time_limit(0) ;
$fecha=date("Y-m-d h:i:s");

define("MAX_SQL",300000);// separo el archivo en bloques de x
$fp = fopen($form_data,"rb");

$sql = "INSERT INTO la_tabla (description,filename,filesize,filetype,fecha)
VALUES('$form_description','$form_data_name','$for m_data_size','$form_data_type','$fecha')";
mysql_query($sql) or die(mysql_error(LINK));

$id = mysql_insert_id();

//recupero el id y lo inserto en otra tabla por bloques en un campo LONGBLOB, la tabla debe tener el id autoincrem.., el id_del data y el campo data

while (!feof($fp)){
$data = addslashes(fread($fp,MAX_SQL));
$sql = "INSERT INTO la_tabla_data (id_data,data) VALUES($id,\"".$data."\")";
mysql_query($sql) or die(mysql_error(LINK));
}


LUEGO PARA RECUPERER EL ARCHIVO//

$query = "select filetype from la_tabla where id=$id";
$result = @MYSQL_QUERY($query);

$type = @MYSQL_RESULT($result,0,"filetype");

//recupero el archivo data por partes

$data="";
$sql="select data from la_tabla_data where id_data=$id order by id";
$result= mysql_query($sql, $link);
while($row = mysql_fetch_row($result)){
$data.=$row[0];
}

Header( "Content-type: $type");
echo $data;


Eso es todo, espero a alguien le sirva.

saludos y gracias a kluster por su ayuda que me permitió encontrar la alternativa.

salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:10.