Newsgroup: it.comp.www.php
Titolo: scaricare file di testo

ho creato questo file di testo
http://i44.tinypic.com/2vw5ico.jpg
 
 
Come si puň vedere č formato da:
- un numero: 1
- un ritorno a capo
- una tabulazione
- un numero: 2
 
Lo carico sul server, e per farlo scaricare predispongo questo script:
 
header('Content-Type: application/binary');
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename=tab.txt');
readfile('tab.txt');
exit;
 
Il problema č che una volta scaricato, non č piů uguale all'originale 
(viene perso il ritorno a capo)
http://i44.tinypic.com/smvpkm.jpg
 
 
Ma perchč?

Lo carico sul server
 
...e sei sicuro che arrivi li' intatto? Prova a vedere quant'e' lungo, o a
calcolare l'md5 del file.
 
Leonardo
 
-- 
Tell us whether you spy, in the light of the morn,
what saluted was fiercely at the fall of the past day:
whose pips and whose bands in the very heart of the fray
bravely floated from the bulwarks to which we were sworn?

 Ma perchè? 
BOH!
A me sta funzionando senza problemi con mac win linux...
 
<?php
//file download.php
.....<altro codice per check autorizzazione>.....
header("Content-disposition: attachment; filename=$pfile");
header('Content-type: text/plain; charset=utf-8');
readfile($pfile);
?>
 
-- 
----- Italliaaaaa 3227! -----
Italian way to work flexibility
http://www.facebook.com/photo.php?fbid=3008023093650&set=a.3007867849769.136344.1654637325&type=1&theater
 
 
 

 ?>
 
ma certo che adesso funziona, ma solo con i file txt.
Come mi aspettavo, se si tratta un file di altra natura 
(exe,com,bat,tic,toc,pap,ca,shi,mam,pop,jpg,lll,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,ooo,avi,jpg,tac,toc,soc,sti,low,hiw,zoo,pdf,bmp,lol,cal,inc) 
naturalmente dopo che viene scaricato risulta corrotto...
 
Io sarï¿œ inesperto, ma mi chiedo, *NON* esiste proprio un sistema 
funzionante, testo, reale, plausibile, collaudato, che permetta di 
scaricare *QUALUNQUE* tipo di file senza che venga alterato?

 calcolare l'md5 del file.
 
 
mamma mia, è un file da 5 byte, ma perchè...
Ogni giorno scarichiamo/carichiamo centinaia/migliaia di MB, perchè 
proprio un file così minuscolo deve dare tutte queste noie...

 scaricare *QUALUNQUE* tipo di file senza che venga alterato?
 
Lo uso da anni e giuro che funziona (bastava cercare php download file):
$file e' il tuo file *fisico* da scaricare:
 
header("Content-Transfer-Encoding: binary");
header(sprintf("Content-Type: %s", [content-type-del-file]));
header(sprintf("Content-Disposition: attachment; filename=\"%s\"", 
[nome-originale]));
header(sprintf("Content-Length: %s", [lunghezza-del-file]));
 
$fp= fopen($file, "rb");
while (!feof($fp) && (connection_status() == 0))  {
   set_time_limit(0);
   print(fread($fp,16384));
   flush();
   ob_flush();
}
fclose($fp);
 
Ciao.
 
-- 
Pubblicita' regresso: 
http://www.ferrero.org
 
** Per scrivermi in mail, sostituire nutella con ferrero...
** To contact me by email, change nutella to ferrero...
 

 header(sprintf("Content-Type: %s", [content-type-del-file]));
 
e come [content-type-del-file] cosa bisogna specificare?
Ripeto: il formato deve essere universale!!!
Per diamine, si tratta solo di scaricare i byte di un file, cosï¿œ come 
sono (senza pasticci del cavolo), ï¿œ cosï¿œ difficile?

 sono (senza pasticci del cavolo), è così difficile?
 
Il content-type... esistera' da qualche parte quel file no?
 
Ti puoi basare sull'estensione oppure puoi fare un'analisi del contenuto 
(ad esempio come fa il comando 'file').


 (ad esempio come fa il comando 'file').
 
beh si, ma bisogna conoscere le specifiche (il contenuto potrebbe essere 
proprietario).
 
Piuttosto per il momento ho riutilizzato il comando che avevo usato 
inizialmente (file_get_contents) disattivando il readfile:
 
echo file_get_contents($name, FILE_USE_INCLUDE_PATH);
//readfile($name);				
 
Ho provato quindi a scaricare alcuni file (txt, exe, zip) e sembra 
funzionare.
Sembra... sono giï¿œ pronto a l'ennesima controindicazione; speriamo di no!!!

 Ma perchè?
 
 
Hai usato FTP per inviare il file da Windows a Unix/Linux, e FTP ha convertito
l'a-capo \r\n in \n. Fai la prova chiamando il file "tab.bin" per verifica.
 
 
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it
 
 

 l'a-capo \r\n in \n. Fai la prova chiamando il file "tab.bin" per verifica.
 
non cambia niente


zac
 
http://stackoverflow.com/questions/1946479/php-downloading-all-file-types
 
 
Ti rispondo anche
....ovviamente per quanto si sforzino il pc l'interfaccia anti-lamer 
non ce l'ha: se prendi un jpg e lo rinomini avi non ï¿œ che l'immagine 
comincia a muoversi!....(ad un corso un allievo credeva di si!)
 
-- 
----- Italliaaaaa 3227! -----
Era Cecco, il figlio del fornaio; era un orribile butterato napoletano, 
col culo molto basso ed un alito agghiacciante tipo fogna di Calcutta.
(Fantozzi)
 
 

 comincia a muoversi!....(ad un corso un allievo credeva di si!)
 
ma infatti, io tutto ho chiesto, tranne che il pc interpretasse il file, 
o meglio volevo solo fargli capire che si tratta di un ammasso di byte, 
che dal server vanno copiati brutalmente sul pc.
Quello che avviene insomma quando copiamo un file dal pendrive sul 
desktop: il sistema operativo deve solo trasferire fisicamente 
l'archivio, replicando perfettamente il contenuto, qualunque esso sia 
(dell'interpretazione se ne occuperï¿œ poi il programma che andrï¿œ a 
visualizzare il file in oggetto).