Newsgroup: it.comp.www.php
Titolo: Conoscere il peso di un file.

Ciao!
Qualcuno sa che comando posso usare per conoscere il peso in kb di un
immagine o file presente sul server?
In breve voglio le informazioni su un file in remoto e fino ad ora ho fatto
cosě x conoscere width e height
$size = getimagesize($url);
        $w = $size[0];
        $h = $size[1];
Per il peso?
Spero in una vostra risposta xchč sono 2 ore che giro tra manuali e google
ma nada de nada.

 immagine o file presente sul server?
http://it.php.net/filesize
E' veramente cosi' difficile cercare nel manuale?
-- 
I'am what I'am, I do what I can

"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:34tqb.97540$e6.34...@twister2.libero.it...

Ciao ero proprio arrivato li, ma a quanto pare non legge i file remoti.
Ora guardo meglio.
Thnks

 remoti.  Ora guardo meglio.
<?php 
$length = 0;
$fp = fsockopen ("
www.google.it
", 80, $errno, $errstr, 30); 
if (!$fp) { 
   echo "$errstr ($errno)<br>\n"; 
} else { 
   fputs ($fp, "GET /intl/it_it/images/logo.gif HTTP/1.0\r\nHost:
www.example.com
\r\n\r\n");
   $header = "";
   while (!feof($fp)) { 
       $header  .= fgets ($fp,128); 
	   $pos = strpos($header, "\r\n\r\n"); 
	   if ($pos)
	   { 
	   	$pos = strpos ($header, "Content-length:");
		$length = substr ($header, $pos + 15);
		$pos = strpos ($length, "\r\n");
		$length = trim(substr ($length, 0, $pos));
		break;
	   }
   } 
   fclose ($fp); 
   print ($length);
} 
?>


"Setec Astronomy" wrote:ů
<?php
........
?>
Chiaro! Grazie!
Ho capito solo la prima riga
$fp = fsockopen ("
www.google.it
", 80, $errno, $errstr, 30);
Provo a lavorarci su.
Perchč devo fare tutto sulla variabile $url
X cui
Ciao

 Chiaro! Grazie!
http://it.php.net/filesize
Tra i commenti degli utenti ce ne e' uno che punta a:
http://www.iezzi.ch/snippets/003_fsize.php
Una versione un po' piu' pulita di quella postata.
<?php
$u = "
http://www.your.url/file.zip
";
$ourhead = "";
$url=parse_url($u); 
$host=$url["host"]; 
$path=$url["path"]; 
$fp = fsockopen($host, 80, &$errno, &$errstr, 20); 
if(!$fp) { 
    echo("error"); 
    exit (); 
} else { 
    fputs($fp,"HEAD $u HTTP/1.1\r\n"); 
    fputs($fp,"HOST: dummy\r\n"); 
    fputs($fp,"Connection: close\r\n\r\n"); 
    while (!feof($fp)) { 
        $ourhead = sprintf("%s%s", $ourhead, fgets ($fp,128)); 
    }
} 
fclose ($fp);
$split_head = explode("Content-Length: ",$ourhead);
$size = round(abs($split_head[1])/1024);
print $size;



Sei un Genio!
Questa versione va molto meglio, l'ho testata ma mi sa che c'è un errore,
nel calcolo del size.
Un file di 2.359.350 me lo riporta con un valore di 85 secco.
Ciao

 Un file di 2.359.350 me lo riporta con un valore di 85 secco.
Quale e' l'url che richiedi? Il problema e' che si appoggia all'HTTP,
se il web server non invia l'header content-length e' impossibile
trovare la dimensione del file remoto.
Piccola errata corrige:
fclose ($fp);
$ourhead = strtolower ($ourhead);
$split_head = explode("content-length: ",$ourhead);
$split_head = explode("\r\n", $split_head[1]);
$size = $split_head[0];
print $size;



Ho fatto la modifica ma non è il peso dell'immagine:
<?
$url=
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
;
$u = $url;
$ourhead = "";
$urls=parse_url($u);
$host=$urls["host"];
$path=$urls["path"];
$fp = fsockopen($host, 80, &$errno, &$errstr, 20);
if(!$fp) {
    echo("error");
    exit ();
} else {
    fputs($fp,"HEAD $u HTTP/1.1\r\n");
    fputs($fp,"HOST: dummy\r\n");
    fputs($fp,"Connection: close\r\n\r\n");
    while (!feof($fp)) {
        $ourhead = sprintf("%s%s", $ourhead, fgets ($fp,128));
    }
}
fclose ($fp);
$ourhead = strtolower ($ourhead);
$split_head = explode("content-length: ",$ourhead);
$split_head = explode("\r\n", $split_head[1]);
$k = $split_head[0];
echo $url;
?>

 Ho fatto la modifica ma non h il peso dell'immagine:
Le hai fatte male, le modifiche.
<?
$u =
"
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
";
$ourhead = "";
$url=parse_url($u); 
$host=$url["host"]; 
$path=$url["path"]; 
$fp = fsockopen($host, 80, &$errno, &$errstr, 20); 
if(!$fp) { 
    echo("error"); 
    exit (); 
} else { 
    fputs($fp,"HEAD $u HTTP/1.1\r\n"); 
    fputs($fp,"HOST: dummy\r\n"); 
    fputs($fp,"Connection: close\r\n\r\n"); 
    while (!feof($fp)) { 
        $ourhead = sprintf("%s%s", $ourhead, fgets ($fp,128)); 
    }
} 
fclose ($fp);
$ourhead = strtolower ($ourhead);
$split_head = explode("content-length: ",$ourhead);
$split_head = explode("\r\n", $split_head[1]);
$size = $split_head[0];
print $size;
?>
Questo funziona perfettamente.



Sarò ciucco, ma a me da sempre come peso 86570 invece dei 2359350 che è il
peso dell'immagine.
A te da il peso 2359350 ?
Grazie
Ciao

 A te da il peso 2359350 ?
Saro' scemo, ma io ho scaricato il file e la sua dimensione e' 86570,
sicuro dell'url che stai utilizzando?


 -- 
No... è + facile che io sia ciucco :-)
E infatti hai ragione tu!
Stavo facendo il test sull'immagine originale!
6 Grande!
Ora funziona ho fatto una function
function get_size($url) {
    $head = "";
    $url_p = parse_url($url);
    $host = $url_p["host"];
    $path = $url_p["path"];
    $fp = fsockopen($host, 80, $errno, $errstr, 20);
    if(!$fp) {
        return $errstr;
    } else {
        fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
        fputs($fp, "HOST: dummy\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        while (!feof($fp)) {
            $head .= sprintf("%s%s", $ourhead, fgets ($fp, 128));
        }
    }
    fclose ($fp);
    $head = explode("\n", $head);
    foreach($head as $h) {
        $s = "Content-Length: ";
        if(substr($h, 0, strlen($s)) == $s) {
            $size = substr($h, strlen($s));
            break;
        }
    }
    return $size;
}
E calcolo il peso con
$k=get_size($url);
Grazie e se ti accontenti di una Birra virtuale se ti piace offro io se poi
posso ricambiare in altro modo son qui!
Thnks!

Xň non mi da il peso esatto dell'immagine originale
Se usi questo url
$u="
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
";
il peso che mi da č 86570 contro i 2359350 reali.
Perchč?

 il peso che mi da h 86570 contro i 2359350 reali.
Che cosa intendi per "immagine originale"?
L'immagine nell'url di cui sopra pesa esattamente 86.570 bytes.


 -- 
Scoperto il *mio* errore.
Ok ora funziona tutto!
Facevo un casino per salvare l'immagine dalla variabile $url e in pratica mi
salvava l'immagine in bmp per cui aumentava di peso :-(
Ciao e grazie ora funziona a meraviglia.

";
?>
ovviamente apre il file immagine e per salvarla devo per forza usare il
tasto destro del mouse e poi salva immagine.
Sto cercando un modo per poter salvare $url sul pc senza dover passare per
il tasto destro del mouse
hai qualche indicazione in merito?
Thnks
Ciao

 hai qualche indicazione in merito?
Certo =)
da rielaborare ma perfettamente funzionante.
<?php 
	function loadfromfile ($filename = "")
	{ return join ('', file ($filename)); }
	if (isset ($_GET["file"])) 
	{
		$parse_url = parse_url ($_GET["file"]);
		$pos = strrpos ($parse_url["path"], "/");
		if ($pos)
		{ $parse_url["path"] = substr($parse_url["path"], $pos + 1); }
		$filename = $parse_url["path"];
		$str_file = loadfromfile ($_GET["file"]);
		$filelen = strlen ($str_file);
		header( "Content-Type: image/jpg" );
		header( "Accept-Ranges: bytes" );
		header( "Content-Length: " . $filelen );
		header( "Content-Disposition: attachment; filename=" . $filename .
";" );
		print ($str_file);
	}
	else
	{
		$url = "
http://www.google.it/intl/it_it/images/logo.gif
"; 
		print ("<a href='down.php?file=" . urlencode ($url) .
"'>Download</a>");
	}
?>
P.S.
Mi sa che apro un sito di consulenze PHP online.



Ci provo!
P.S. Se lo apri io sono il primo a supportarti (nel mio piccolo e come
posso) :-)

S E I !!! G R A N D E !!!
Caspiterina...
Salva il file n'dove ti pare////
Mitico Setec Astronomy aprilo davvero un sito di consulenza php nel mio
piccolo (circa 1500 iscritti nel mio portalino) ti faccio
pubblicità.......................
:-)
Stasera finalmente ho trascurato la mia donna x un buon motivo :-)

L'immagine la salva ma mi sa nel modo sbagliato!
Quando la apro è tutto nero e dell'immagine non c'è l'ombra.
Mumble, mumble........

 Mumble, mumble........
Io ho provato con la gif di google e funziona perfettamente.



Con la gif di google si, con il mio
$url="
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
"
;  no.
Ci hai provato?
Se ti funziona anche quello vuol dire che il passaggio di variabili non mi
funge.
In breve
file down.php ho la variabile $url che passo al file downs.php (che
contiente la function loadfromfile con il codice
print ("<a href='downs.php?file=" . urlencode ($urls) ."'>Download</a>");
Si apre la finestra apri-salva sia che apro sia che salva, il file è delle
giuste dimensioni ma non si vede nada.
Che ne dici?
Ho sbagliato qualcosa?

 ."'>Download</a>");
Hai la variabile $url, ma hai scritto urlencode ($urls), con la S
finale. Fai attenzione!!!



E' ok, non è quello ho passato la variabile $url in $urls per non
confonderla con la precedente.
Mi sa che ho problemi io con il collegamento!
Nonostante alice alice, non riesco a vedere l'immagine nemmeno dgtnd l'url
nel browser.
Faccio un riavvio  e ci riprovo.


Nada!
Salva ma non riesco a vederle!

Master wrote:

Rinomina il file salvato in .txt ed aprilo, che cosa c'e' scritto
dentro?


 confonderla con la precedente.
Quando mandi i dati a down.php DEVI fare l'urencode dell'url
altruimenti lo script non sara' in grado di recuperare l'immagine.



www.example.com
\r\n\r\n");
Meglio il comando HEAD, forse. Se ricordo giusto la RFC, il risultato DEVE
essere lo stesso, ma senza trasferimento di dati.
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

Meglio il comando HEAD
...quello che si dice "arrivare dopo i fuochi e la banda" :-)
Leonardo vergognoso nell'angolino


 -- 
Ti ho mandato un email se ti arriva perchè sul news non mi lascia inviare il
codice.

In pratica ho usato il codice che mi hai postato tale e uguale (con $urls
che assume il valore di $url).
Ho provato anche ad inserire l'url del file ma non mi fa vedere l'immagine!
function loadfromfile ($filename = "") {
 return join ('', file ($filename)); }
if (isset ($_GET["file"]))
{
$parse_url = parse_url ($_GET["file"]);
$pos = strrpos ($parse_url["path"], "/");
if ($pos)
{ $parse_url["path"] = substr($parse_url["path"], $pos + 1); }
$filename = $parse_url["path"];
$str_file = loadfromfile ($_GET["file"]);
$filelen = strlen ($str_file);
header( "Content-Type: image/jpg" );
header( "Accept-Ranges: bytes" );
header( "Content-Length: " . $filelen );
header( "Content-Disposition: attachment; filename=" . $filename .
";" );
print ($str_file);
}
else
{
$urls = $urls;


 Leonardo vergognoso nell'angolino
:-)
Il fatto è che con la function loadfromfile() si riesce a salvare il file.
Solo che Setec Astronomy la vede e io la vedo tutta nera!


No!
Altrimenti non salverebbe nemmeno l'immagine no?
Io pensavo una cosa, perchè ho notato che il file non viene salvato tutto,
il peso è di 86.57 Kb ed io sul mio hd ho cane2.jpg di 69,1 Kb può essere
quello il motivo?
Ti ricordo che $url è
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg

In pratica $urls che da il valore a $file viene fuori cosě
http://localhost/down.php?file=http%3A%2F%2Fwww.rocksland.com%2Fpublic%2Fwallpapers%2Fanimali%2F1024x768%2Fcane2.jpg

Ho provato!
E va!!!!!

Ho copiato il codice e l'ho messo nella pagina ma niente.
Mi scarica un file di 69.1 KB.
Cose da pazzi

 -- 
L'ho copiato cosě come me l'hai dato in un file senza altre variabili.
Ma non mi funziona.
Magari č un problema della config. di apache?
Non so che dire.

Boh!
Misteri di php!
Notte Setec Astronomy grazie per l'aiuto!
Domani a mente fresca aricomincio a spulciare il codice anche se mi sa che
c'è qualcosa da configuare in apache o php.
Ciao
Best Thnks


Porc zozz....
Ma č impossibile che sul mio non funziona!
Ho copiato pari pari il codice e non gira.
Prima mi ha addirittura fatto vedere tutto il codice del file anzichč
salvarlo.
Porc zozz...
<?php
function loadfromfile ($filename = "")
{ return join ('', file ($filename)); }
if (isset ($_GET["file"]))
{
$parse_url = parse_url ($_GET["file"]);
$pos = strrpos ($parse_url["path"], "/");
if ($pos)
{ $parse_url["path"] = substr($parse_url["path"], $pos + 1); }
$filename = $parse_url["path"];
$str_file = loadfromfile ($_GET["file"]);
$filelen = strlen ($str_file);
header( "Content-Type: image/jpg" );
header( "Accept-Ranges: bytes" );
header( "Content-Length: " . $filelen );
header( "Content-Disposition: attachment; filename=" . $filename .
";" );
print ($str_file);
}
else
{
$url =
"
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
";


 
http://www.rocksland.com/public/wallpapers/animali/1024x768/cane2.jpg
Pura curiosita', se ho capito bene 
www.rocksland.com
 e' tuo?
Ma tu hai i diritti legali per poter distribuire queste immagini?


Hai capito male!
Ho preso un url a caso con delle immagini per fare un test!
Io il sito ancora non ce l'ho ci sto lavorando e faccio tutto in locale!
Prova a chiederlo al wm di quel sito!
A me sinceramente importa na sega.