2010-09-27 18 views
7

he estado buscando en Google pero todo lo que obtengo es getimagesize y filesize.
getimagesize dosent obtener el tamaño KB de ancho y alto que no es lo que estoy buscando.
tamaño del archivo dame el mensaje Advertencia: Tamaño del archivo() [function.filesize]: Stat falló para
el archivo en cuestión se archivo .jpg 51kbphp obtener el tamaño KB de una imagen

$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

no funciona,

¿Cómo logro esto?

+0

¿Qué versión de PHP está usando? – pascal

+0

Quizás vea [esta pregunta] (http://stackoverflow.com/questions/2203679/php-filesize-works-on-all-but-one-file-gives-stat-failed-error) – pascal

Respuesta

7

No se puede obtener el tamaño de archivo de los elementos remotos, ya sea dar una ruta relativa en su sistema O hacer un file_get_contents() para obtener el contenido primero . Por lo tanto, en lugar de http: //, haz un filesize('/path/to/local/system'). Asegúrese de que sea legible por el proceso de php

+0

sí, cierto, yo acabo de notar, gracias. Debería haberlo pensado antes, soy un idiota. – Macao

+0

¿Qué tal un consejo en ['filesize()' docs en PHP.net] (http://php.net/manual/en/function.filesize.php)? Dice: "A partir de PHP 5.0.0, esta función también se puede usar con algunos contenedores de URL. Consulte Protocolos y envolturas compatibles para determinar qué envoltorios admiten la familia de funcionalidades de stat()". Parece que ** puedes ** usar elementos remotos 'filesize()'. Solo tiene que tener su servidor y el analizador PHP configurados correctamente (la seguridad es importante). – trejder

4

No puede buscar el tamaño de archivo de un archivo remoto como ese. Está destinado a mirar el tamaño del archivo de los archivos locales.

Por ejemplo ...

$imgsize = filesize('/home/projects/site/1.jpg'); 
+0

Ver mi comentario a la respuesta de Stewie. ** Puedes ** usar el tamaño de los archivos para un archivo remoto, si solo su entorno y servidor están configurados correctamente. – trejder

0

filesize lleva el nombre del archivo como argumento no es una URL y devuelve el tamaño del archivo en bytes. Puede dividir el valor de retorno con 1024 para obtener el tamaño en KB.

+0

Ver mi comentario a la respuesta de Stewie. ** Puedes ** usar el tamaño de los archivos para un archivo remoto, si solo su entorno y servidor están configurados correctamente. – trejder

1

filesize() es la función a usar. Podría estar fallando debido

  1. Usted está tratando de obtener una dirección web & envolturas de URL no se pueden activar
  2. esa URL no es válida.

Si está intentando ejecutar filesize() en un archivo local, consulte la ruta del sistema de archivos, no una URL web.

0

Tuve el mismo problema, que resolví así. No sé cómo óptima es, pero funciona para mí:

getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

$file_size = $file[0]*$file[1]*$file["bits"]; 
+0

Si filesize() no funciona con recursos HTTP, getimagesize() también fallará. El cálculo del tamaño del archivo al multiplicar las propiedades de la imagen sin comprimir también dará lugar a resultados incorrectos. – Sven

1

O también se puede hacer algo como:

$header = get_headers($url); 
foreach ($header as $head) { 
    if (preg_match('/Content-Length: /', $head)) { 
     $size = substr($head, 15);      
    } 
} 
Cuestiones relacionadas