PDA

View Full Version : [PHP] Script di download, strano problema con alcuni file


andbin
25-08-2006, 09:36
Ho un problema ... davvero strano. Forse non è proprio un problema di programmazione (spostate pure il 3d se volete) ma spero che qualcuno possa darmi una mano a capire il motivo.

Sul mio sito utilizzo uno script PHP per forzare il download di alcuni file.
Il nocciolo dello script è questo:
....
....
header ("Pragma: public");
header ("Expires: 0");
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header ("Cache-Control: private", false);
header ("Content-Type: application/force-download");
header ("Content-Disposition: attachment; filename=\"" . $basename . "\";");
header ("Content-Description: File Transfer");
header ("Content-Transfer-Encoding: binary");
header ("Content-Length: " . filesize ($filename));

set_time_limit (0);

@readfile ($filename);
....
Questo script viene eseguito a seguito di una richiesta GET del tipo:
http:// ...... /download.php?id=nomefile.xyz

Questo script lo uso principalmente per far scaricare dei file .zip (ma anche .pdf) dal sito. Dal mio PC di casa non ho problemi, con Firefox scarico gli zip e li apro.

Dal mio PC in ufficio ho degli stranissimi problemi: certi zip li scarica ma incompleti. Esempio: un file lungo 30129 bytes lo scarica ma solo per 30116 bytes. Risultato: lo zip è corrotto e non lo apro. Questo mi succede con Firefox, Netscape, ecc...

La prima cosa strana è che lo fa solo per alcuni zip e per essere precisi, gli zip che contengono file .exe.
L'altra cosa ancora più strana è che se provo a fare il download con il tool 'wget' funziona benissimo.

A casa ho le stesse versioni dei browser che ho in un ufficio, per cui deduco che la causa non è il browser.
Il fatto poi che sul mio PC d'ufficio wget scarichi bene il file mentre Firefox e Netscape non lo scaricano bene mi fa pensare che non sia nemmeno un problema di "rete".
Ma a questo punto, quale può essere il problema???

Grazie x qualunque suggerimento. :)

cionci
25-08-2006, 16:15
Che cosa strana... Hai qualche proxy + antivirus in ufficio ? Non vorrei che ti rendesse di proposito il file non leggibile... Ma resterebbe sempre il problema di wget che funziona :boh:

andbin
25-08-2006, 17:14
Che cosa strana... Hai qualche proxy + antivirus in ufficio ? Non vorrei che ti rendesse di proposito il file non leggibile... Ma resterebbe sempre il problema di wget che funziona :boh:Grazie cionci ... in effetti è molto strano, mai vista una cosa del genere.

A livello di rete delle differenze ci sono: a casa ho una piccola LAN con uno switch collegata alla ADSL con un router Zyxel P645R.
In ufficio la LAN è collegata ad un PC che fa da server e che ha 2 interfacce di rete: una sulla LAN e l'altra su un router ADSL. Questo PC monta una slackware e fa da mail server, proxy, gateway. Io dalla mia postazione lo uso solo come gateway. Da quello che so ha un antivirus (di cui non ricordo il nome) ma credo sia solo x la posta.

Ad ogni modo non credo che ci sia qualche filtro sui file o sui nomi di file. Ho fatto questa prova: ho creato un file (test.txt) di 256 bytes con dentro i valori in sequenza 00 01 02 ..... FD FE FF.
Provando a scaricare tramite lo script questo file, mi viene scaricato di 241 bytes. :stordita:

cionci
25-08-2006, 17:25
Azz...interessante...ed il contenuto scaricato è giusto ?!?!?

Prova a togliere tutte le intestazioni che riguardano il controllo della cache...