Foros del Web » Programando para Internet » PHP »

$file_size = 0 ¿PORQUE?

Estas en el tema de $file_size = 0 ¿PORQUE? en el foro de PHP en Foros del Web. Saludos, Tengo un script en donde entre otras cosas almacena en una bd detalles de los archivos que subo al servidor, en la tabla se ...
  #1 (permalink)  
Antiguo 07/03/2004, 17:14
Avatar de oswaldog  
Fecha de Ingreso: diciembre-2003
Ubicación: Lara
Mensajes: 90
Antigüedad: 14 años
Puntos: 0
$file_size = 0 ¿PORQUE?

Saludos, Tengo un script en donde entre otras cosas almacena en una bd detalles de los archivos que subo al servidor, en la tabla se almacenan correctamente las variables que manejo excepto la del tamaño del archivo.

el código es :

Código PHP:
<?php 
session_start
();
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
 
$N 
4
    for(
$i=0$i<$N$i++) {

        if  (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i])) {
            
$split_path split("/"$HTTP_POST_FILES['userfile']['name'][$i]);
            
$split_path end ($split_path);
            
$extension split("[/.]"$split_path);
            
$nombre $extension;
            if (
end($extension) == "rar"  || end($extension)== "zip" ) {
                echo 
"CARGANDO";
                
$RUTA_UPLOADED "data/".$_SESSION['cedula']."/";
                
$NOMBRE_FILE "$extension[0]" "." end($extension);
                 
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED $NOMBRE_FILE);
                include 
"db_mysql.inc";
                
$bd = new Db_Sql;
                
$fecha date("Y-m-d H:i:s");
            } else {
                echo 
"tipo de archivo invalido";
        }
    
    
$sql "INSERT INTO tb_archivo (cedula, archivo, extension, size, fecha) VALUES ('".$_SESSION['cedula']."', '".$extension[0]."', '".end($extension)."', '".$userfile_size."', '".$fecha."');";
    
$result $bd->query($sql); 
    
$bd -> free();
    }
    
    }
    echo 
"listo";
//}
?>

</body>
</html>

Se de una función: clearstatcache() que Limpia la cache de estado de un fichero, y que afecta a file_size pero no se donde colocarla.
__________________
Gracias, Oswaldo

"Compartir tus conocimientos. Es una buena manera de ganarse la inmortalidad"
  #2 (permalink)  
Antiguo 07/03/2004, 21:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si estás subiendo archivos por HTTP (upload) .. en el array que ya usas en el 99% del script .. tienes el tamaño del archivo que subes en:


$HTTP_POST_FILES['userfile']['size'][$i]

Pero, en tu consulta SQL .. usas la versión "global" de esa variable ademas que no tienes en cuenta que al parecer estás haciendo un upload de múltiples archivos ... Si subes un sólo archivo es probable que el dato del tamaño del archivo suba correcto y se almacene en tu BD .. pero si son +1 no.

$userfile_size

A todo esto sería recomendable que usases los arrays superglobales $_FILES en lugar de $HTTP_POST_FILES por tu seguridad.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/03/2004, 22:44
Avatar de oswaldog  
Fecha de Ingreso: diciembre-2003
Ubicación: Lara
Mensajes: 90
Antigüedad: 14 años
Puntos: 0
Ok...

En vez de subir multiples archivos, deje solo para hacer uno a la vez, sin embargo siempre el tamaño que es asignado al campo de la bd es de 127 bytes sí el archivo es mayor en capacidad a esa cifra.



Saludos...
__________________
Gracias, Oswaldo

"Compartir tus conocimientos. Es una buena manera de ganarse la inmortalidad"
  #4 (permalink)  
Antiguo 08/03/2004, 01:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: Ok...

Hola,
Cita:
Mensaje Original por oswaldog
En vez de subir multiples archivos, deje solo para hacer uno a la vez, sin embargo siempre el tamaño que es asignado al campo de la bd es de 127 bytes sí el archivo es mayor en capacidad a esa cifra.



Saludos...
Eso es porque habras definido el tipo del campo como TinyINT o algo asi. Definelo como unsigned INT o algo que pueda almacenar esos datos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 08/03/2004, 09:18
Avatar de oswaldog  
Fecha de Ingreso: diciembre-2003
Ubicación: Lara
Mensajes: 90
Antigüedad: 14 años
Puntos: 0
***MUCHAS GRACIAS***

En efecto el error no era el scritpt, sino en la BD.

SALUDOS Y MUCHAS GRACIAS...
__________________
Gracias, Oswaldo

"Compartir tus conocimientos. Es una buena manera de ganarse la inmortalidad"
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:56.