Newsgroup: it.comp.www.php
Titolo: Sapere dimensione file

Salve a tutti,
 mi accingo a scrivere un piccolo script per permettere
il download di file che non si trovano sul mio server senza
far conoscere il loro url (una specie di script anti-leech).
Come posso sapere la dimensione del file da far scaricare?
Il comando "filesize" non funziona con file remoti...
Grazie
Killer

Finquando il file non arriva al server non è possibile stabilirlo.
Se il file arriva al server puoi usare $nomefile_size
e quando l'hai salvato puoi usare la funzione filesize
J

 e quando l'hai salvato puoi usare la funzione filesize
Per adesso ho fatto cosi:
$ft=fopen($file,"r");
fseek(SEEK_END);
$fdim=ftell();
fclose($ft);
Bow-wow
Killer

 fclose($ft);
See, come no :D
Lo script e' questo, ma non funziona :/
...
$ft=fopen($file,"rb");
fseek($ft,SEEK_END);
$fdim=ftell($ft);
fclose($ft);
...
l'errore e' :
Warning: Supplied resource is not a valid File-Handle resource in
/data2/webfree/kingphp/script/download.php on line 51 (fseek ndK)
Warning: Supplied resource is not a valid File-Handle resource in
/data2/webfree/kingphp/script/download.php on line 52 (ftell ndK)
Bow-wow
Killer

 ha scritto nel messaggio
news:KeMZ7.3019$WQ2.1...@news2.tin.it...


 AUGURI....
Anche a te :)
Bow-wow
--
Killer, "K. I. Feeling"
*KingdomAmiga* R.I.P. fino a Gennaio 2002
ICQ in crisi mistica - Mastro di Cerimonie del Ghouls
Mass Downloading del momento: nulla di nulla...

), mi
resi conto che quella funzione potrebbe essere un tantino piu' gentile
usando HEAD anziche' GET.
Il server destinatario (specie se e' il proprio) ne sara' grato 8-D
Leonardo macellaio pentito
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 usando HEAD anziche' GET.
Ti diro' che hai fatto bene a usare GET. Io infatti una volta scrissi
un programmetto che controllava lo stato di url http, ebbene con mia
estrema sorpresa scoprii che alcuni server bacati (addirittura quello
delle netscape :), che credo ormai non sia piu' molto in giro)
rispondevano correttamente alla richiesta di get, mentre all'head
corrispondente davano errore (non ricordo quale). Teoricamente
si potrebbe provare prima un head e poi un get, ma alla fine ho detto
chi se ne frega e ho usato get :)
-- 
Ciao,           | Sostituisci "dontspam" con "softhome"
 Francesco      | nell'indirizzo email per avere quello corretto

Come posso sapere la dimensione del file da far scaricare?
L'unico modo che hai e' usare fsockopen() ed inviare i comandi
HTTP necessari:
// 
// remotefilesize - ritorna -1 in caso di errore, o la lunghezza
// del file
// 
// Verificata... ma sono pressoche' sicuro che sia Jurgen che io
// abbiamo gia' postato qualcosa del genere :-)
// 
<?
function remotefilesize($web, $port, $object)
{
	$error = ""; $errno = 0; $filesize = -1;
	$fp = fsockopen($web, $port, $error, $errno);
	fwrite($fp, "HEAD $object HTTP/1.0\n\n");
	while(!feof($fp))
	{
		$hdr = fgets($fp, 254);
		if (eregi("^Content-Length:[^0-9]*([0-9]+)", $hdr, $gr))
		{
			$filesize = $gr[1];
			break;
		}
	}
	@fclose($fp);
	return $filesize;
}
	// Questo test ritorna correttamente 2326:
	print remotefilesize("localhost", 80, "/apache_pb.gif");
?>
Leonardo

[CUT]
Grazie del suggerimento, ma avevo pensato una pazzia :D
Visto che cmq devo includere il file all'interno del php,
avevo pensato di caricarmi tutto il file in una variabile
e poi vedere la sua dimensione: avrei cosi' la dimensione
del file ed il file gia' in "locale", cosi' con un
print $testo_file; // (headers gia' settati a dovere)
posso farlo scaricare.
Quanto "malsana" e' quest'idea?
Visto che readfile non sembra permettermi la memorizzazione
in una variabile, cosa mi consigliate? fopen e fread fino la fine
del file o c'e' qualcosa di meglio in php?
Bow-wow
Killer