G
giuseppederossi
Guest
Ciao a tutti,
su un mio sito ho implementato la possibilita' di effettuare una scelta in un set di file ed effettuare il download del file zippato contenente i file scelti. Il nome del file zippato viene creato in base alla data e all'ora e dovrebbe essere cancellato alla fine del download.
Tutto viene eseguito in modo corretto tranne unlink(), ossia il file non viene cancellato.Sembra che dopo il download, effettuato o meno in base alla scelta dalla finestra di diaologo, non viene eseguita alcuna istruzione,lato client non sembrano esserci problemi, lo zip e' corretto.
Ho visto molte differenti soluzioni, anche effettuando la cancellazione via shell di dos (sic!) , il problema e' che dopo il download il processo di script termina. Molti hanno usato i miei stessi passi:
- creazione zip
- invio header
- readfile o invio file per burst
- unlink file.
Sto usando PHP 5.0 con wamp, prove effettuate con IE6 sp2
Vi invio il codice un po' disordinato per le prove che ho effettuato:
@ignore_user_abort();
@set_time_limit(0);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($nome_file).";");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($nome_file));
header ("Connection: close"); // non mi pare abbia alcun effetto
// flush();
// readfile($nome_file);
$chunksize = 1*(1024*1024);
$buffer = '';
$cnt =0;
$handle = fopen($nome_file, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
$cancellato= @unlink($nome_file);
$command_zip = "del ".$nome_file;
exec ($command_zip);
exit;
Esiste un sistema per poter intercettare la risposta dell'utente della finestra di dialogo per il download ?
Grazie in anticio
PS: chiedo scusa se questa mail e' ripetuta: ho inviato ieri la medesima ma non l'ho vista pubblicata.
su un mio sito ho implementato la possibilita' di effettuare una scelta in un set di file ed effettuare il download del file zippato contenente i file scelti. Il nome del file zippato viene creato in base alla data e all'ora e dovrebbe essere cancellato alla fine del download.
Tutto viene eseguito in modo corretto tranne unlink(), ossia il file non viene cancellato.Sembra che dopo il download, effettuato o meno in base alla scelta dalla finestra di diaologo, non viene eseguita alcuna istruzione,lato client non sembrano esserci problemi, lo zip e' corretto.
Ho visto molte differenti soluzioni, anche effettuando la cancellazione via shell di dos (sic!) , il problema e' che dopo il download il processo di script termina. Molti hanno usato i miei stessi passi:
- creazione zip
- invio header
- readfile o invio file per burst
- unlink file.
Sto usando PHP 5.0 con wamp, prove effettuate con IE6 sp2
Vi invio il codice un po' disordinato per le prove che ho effettuato:
@ignore_user_abort();
@set_time_limit(0);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($nome_file).";");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($nome_file));
header ("Connection: close"); // non mi pare abbia alcun effetto
// flush();
// readfile($nome_file);
$chunksize = 1*(1024*1024);
$buffer = '';
$cnt =0;
$handle = fopen($nome_file, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
$cancellato= @unlink($nome_file);
$command_zip = "del ".$nome_file;
exec ($command_zip);
exit;
Esiste un sistema per poter intercettare la risposta dell'utente della finestra di dialogo per il download ?
Grazie in anticio
PS: chiedo scusa se questa mail e' ripetuta: ho inviato ieri la medesima ma non l'ho vista pubblicata.