Newsgroup: it.comp.www.php
Titolo: scaricare più file

Se faccio una sezione download con più file e permetto all'utente di
scegliere quali scaricare c'è un modo per fargli scaricare tutti quelli
selezionati in una volta?
Mi sta venendo il mal di testa per trovare una soluzione :(
--
                          the_cure

 wrote in message
news:9n4va9$1ss$1...@fe1.cs.interbusiness.it...

Non e' facile per il fatto della oneway comunication....
Potresti andare una altra strada e creare un zip/archivio temporaneo
che trasmetti poi completo all'utente (nome del file con numero del SID o
tecniche simile). Lui poi lo deve solo scompattare e crea nella cartella i
tanti
file selezionati.
Chiaramente pesante per il server come tempo calcolo (anche se togli la
compressione), ma dipende dalla lunghezza dei file. Sicuramente una bella
strada.
Neanche complesso da implementare. Sarebbe un bel modulo da pubblicare.
Leggi un po' qui: 
http://www.php.net/manual/en/ref.zlib.php
J.

 Leggi un po' qui: 
http://www.php.net/manual/en/ref.zlib.php
Dimenticavo: per creare l'archivio potresti utilizzare il 'tar' o 'zip' con
una chiamata via system.

Mi sta venendo il mal di testa per trovare una soluzione :(
Mettiamola cosi': il modo elegante e' usare multipart/parallel.
<?
	// download?FILELIST=file1.zip,file2.zip,file3.zip...
        if (isset($FILELIST))
        {
                $files = explode(",", $FILELIST);
                $n = count($files);
                $ones = "1";
                for ($i = 1; $i < $n; $i++) $ones .= ",1";
                print "<HTML><FRAMESET ROWS=\"$ones\">";
                for ($i = 0; $i < $n; $i++)
                        print("<FRAME
SRC=\"$PHP_SELF?FILE=$files[$i]\">\n");
                print "</FRAMESET></HTML>";
        }
        else if (isset($FILE))
        {
                // Verificare che il file sia autorizzato!!!
                Header("Content-Type: application/unknown");
                Header("Content-Disposition: inline; filename=$FILE");
                Header("Filename: $FILE"); // Compatibilita'
                $fp = fopen($FILE, "r");
                fpassthru($fp);
                @fclose($fp);		   // Igiene e poesia
        }
?>
Leonardo che dell'eleganza non ha mai fatto un vezzo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

 quelli selezionati in una volta?
Magari la soluzione c'e`, ma non la vedo molto semplice.
Il client deve fare una richiesta perche` il server gli possa mandare
una risposta. Non puo` mandare una richiesta e ricevere n risposte
diverse.
Il modo migliore, IMO, e` di zippare i file, magari con compressione 0
se sono gia` compressi, e mandarne uno solo che poi l'utente si
decomprimera` trovandoci i file selezionati.
Bye.

Praticamente crei la lista dei file selzionati da scaricare uno alla volta
vero? Se č cosě č la prima cosa che ho pensato ma i miei  amici si sono
fissati che lo vogliono mettere in un unico file... :(
Cmq questa soluzione l'adotto in ogni caso magari implementata con un modulo
per .zip
Graize a tutti :)
--
                          the_cure


fissati che lo vogliono mettere in un unico file... :(
Un unico SORGENTE? Quello che ti ho mandato *e'* un unico sorgente.
Oppure un unico FILE DOWNLOADATO?
Per mandare piu' files in uno, si dovra' mandare un tar-ball. Non e'
affatto difficile da implementare, e WinZip lo supporta. Inoltre, se
non si usa la compressione ma solo il tarring (+512 bytes per header
e allineato a blocchi di 10K, mi pare), la CPU manco se ne accorge.
Leonardo


 Leonardo
Grazie :))))
--
                          the_cure

tar-ball? cos'è? :(
Archivio tar. Su sistemi GNU/Linux basta qualcosa del tipo:
	Header("Content-Type: application/tar");
	Header("...filename: my.tar");	// CORREGGERE QUESTA RIGA!!!
	system("tar cf - $FILELIST");
...e  WinZip, ad es., scarica UN file, poi lo apre e dentro c'e' tutte
'e cose.
