Foros del Web » Programando para Internet » PHP »

Averiguando tamaño fichero

Estas en el tema de Averiguando tamaño fichero en el foro de PHP en Foros del Web. Hola, Estoy probando unos scripts de subida de ficheros y no se debido a que incializa o no llega bien al valor, siempre me obtiene ...
  #1 (permalink)  
Antiguo 09/07/2003, 03:01
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Averiguando tamaño fichero

Hola,

Estoy probando unos scripts de subida de ficheros y no se debido a que incializa o no llega bien al valor, siempre me obtiene 0 bytes. Por lo demas funciona de maravilla. Están implicados tres ficheros.


Código PHP:
<?
include "conf_subir.php";
echo 
"<form enctype=multipart/form-data method=post action=$destino>
<input type=File name=fichero size=25>
<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2097152\">
<input type=submit name=submit value=Upload>"
;
?>
Código PHP:
<?
echo "<!--  //**************************************************************************//
//**************************************************************************//
//***                                                                    ***//
//*** Este codigo se distribuye bajo licencia GNU                        ***//
//*** Puedes copiarlo, modificarlo y distribuirlo libremente para usos   ***//
//*** no comerciales                                                     ***//
//*** Solo te pido que dejes estas lineas y notifiques las modificaciones***//
//*** o hagas referencia  al autor Expresateweb                          ***//
//*** [url]http://www.expresateweb.com.sv[/url]                                     ***//
//*** [email][email protected][/email]                                       ***//
//***                                                                    ***//
//**************************************************************************//
//**************************************************************************// -->"
;
/*
// Debes sustituir tu_directorio por la ruta absoluta
// donde vayas a poner las imagenes. No quites las comillas
// dobles.
// La ruta absoluta debe ser algo asi como
// /home/tu_nombre_de_usuario/htdocs/el_directorio/opcionalmente_mas_directorios
// Es muy importante que PONGAS una / al final del todo
*/
$directorio="c:/directorio_destino/";

/*
Pon entre las comillas la frase que quieres que aparezca cuando el usuario haya subido el fichero:
*/

$frase_agradecimiento="<p>Ha subido el siguiente fichero a nuestro servidor: <b>$fichero_name</b></p><center><h3>Gracias por colaborar con nosotros</h3></center>";

/*
Pon entre las comillas la frase que quieras que aparezca en caso de no poderse subir el fichero
*/
$frase_no="<center><h3>No podemos aceptar su fichero, o bien está tratando de realizar un acceso no autorizado o bien el tipo de fichero que trata de subir no está autorizado. O bien ha dejado algún campo en blanco</h3><br>Pulse atrás en su navegador y rellene correctamente sus datos.</center>";

/*
Pon entre las comillas la frase que quieras que aparezca en caso de existir un fichero con el mismo nombre
*/
$f_repe="<center><h3>No podemos almacenar su fichero porque ya existe uno con el mismo nombre</h3><br>Pulse atrás en su navegador y rellene correctamente sus datos.</center>";

/*
// Pon entre las comillas la página que aparecera tra pulsar el boton enviar
// y en la que tienes que incluir el codigo de hacer_upload.php3
*/
$destino="subir.php";

/*
Si quieres que se puedan sobreescribir ficheros existentes pon entre las comillas SI (en mayúsculas) si quieres que no se puedan borrar ficheros existentes al tratar de subir uno con el mismo nombre pon NO (en mayúsculas).
INSISTO: si pones SI y tienes un fichero que se llama fulanito.zip y alguien (o tu mismo) sube otro fichero con el mismo nombre pero que sea distinto, el anterior se borrará y quedará el nuevo
*/
$sobreescribir="NO";

/* Si quieres que se pueda subir cualquier tipo de fichero
pon SI (con mayúsculas entre las comillas). Si quieres que se puedan subir sólo ficheros de audio pon AUDIO (con mayúsculas entre las comillas). Si quieres que sólo se puedan subir ficheros de imágenes pon IMAGEN (con mayúsculas entre las comillas). Si quieres que sólo se pueda subir un tipo específico de fichero (ver la siguiente variable) pon FILTRAR (en mayúsculas entre las comillas)
*/
$que_subo="SI";

/*
SI QUIERES QUE SÓLO SE PUEDA SUBIR UN TIPO DE FICHERO:
En principio algunos de los tipos de fichero posibles son los siguientes:
text/plain (para los .txt, los .htm, los php, etc), application/x-zip-compressed, application/octet-stream (se suele usar para los .exe), application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, image/bmp, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg (para .jpg, sino prueba con el otro, depende de la compresión), audio/mpeg (este se usa para los mp3)

Pon entre las comillas el tipo de fichero que quieres que suban tus usuarios

Por defecto el tipo de ficheros es imagen jpg
*/
$tipo_fichero="image/bmp";
?>
Y ahora viene el que me da el problema:

Código PHP:
<?
include "conf_subir.php";
$parte_fichero=explode("/"$fichero_type);
echo 
"Tipo de fichero $fichero_type<br>";

// *** Averiguando tamaño ***
$type = Array ('bytes''kilobytes''megabytes''gigabytes');
$filesize filesize ($fichero_name);

 for (
$i 0$filesize 1024$i++)
     
$filesize /= 1024;

 
$tamano round ($filesize2)." $type[$i]";
 echo 
"Tamaño de fichero $tamano<br>";
    
// ***********************************************************************************


chdir($directorio);
   
$handle=opendir('.');
   while (
$file readdir($handle)) {
       if (
$file != "." && $file != ".." && !is_dir($file)) {
           
$ficheros_en_dir[]=$file;
       }
   }
if (
in_array($fichero_name$ficheros_en_dir) && $sobreescribir=="NO") {
    echo 
"$f_repe";
}
else {
      if (
is_uploaded_file($fichero) && !empty($fichero)) {
          if (
$que_subo=="FILTRAR" && $fichero_type=="$tipo_fichero") {
              
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="AUDIO" && $parte_fichero[0]=="audio") {
              
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="IMAGEN" && $parte_fichero[0]=="image") {
               
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="SI") {
               
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else {
                echo 
"$frase_no";
          }
      }
      else {
          echo 
"$frase_no";
      }
}
?>
Muchas gracias una vez más,
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 09/07/2003, 03:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Solucionado

Perdonad mi torpeza, intentaba averiguar el tamaño del fichero antes de localizarlo y evidentemente la variable no contenia el nombre.


Script solucionado:

Código PHP:
<?
include "conf_subir.php";
$parte_fichero=explode("/"$fichero_type);
echo 
"Tipo de fichero $fichero_type<br>";

chdir($directorio);
   
$handle=opendir('.');
   while (
$file readdir($handle)) {
       if (
$file != "." && $file != ".." && !is_dir($file)) {
           
$ficheros_en_dir[]=$file;
       }
   }
   
// *** Averiguando tamaño ***
$type = Array ('bytes''kilobytes''megabytes''gigabytes');
$filesize filesize ($fichero_name);

 for (
$i 0$filesize 1024$i++)
     
$filesize /= 1024;

 
$tamano round ($filesize2)." $type[$i]";
 echo 
"Tamaño de fichero $tamano<br>";
    
// ***********************************************************************************

if (in_array($fichero_name$ficheros_en_dir) && $sobreescribir=="NO") {
    echo 
"$f_repe";
}
else {
      if (
is_uploaded_file($fichero) && !empty($fichero)) {
          if (
$que_subo=="FILTRAR" && $fichero_type=="$tipo_fichero") {
              
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="AUDIO" && $parte_fichero[0]=="audio") {
              
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="IMAGEN" && $parte_fichero[0]=="image") {
               
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else if (
$que_subo=="SI") {
               
$a_donde="$directorio"."$fichero_name";
               
move_uploaded_file($fichero"$a_donde");
               echo 
"$frase_agradecimiento";
          }
          else {
                echo 
"$frase_no";
          }
      }
      else {
          echo 
"$frase_no";
      }
}
?>
GRACIAS
__________________
Lailuluelo
El error está en lo obvio
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 22:19.