faire patienter les users pdt la création de fichier zip et suppression du zip

Petit nouveau ! | 6 Messages

31 juil. 2015, 15:57

Bonjour,
j'ai une page php contenant un lien pour télécharger une archive zip qui est créé au moment du click vers la page download_site.php.
Je souhaiterais que pendant la création de cette archive, j'affiche un message ou une image qui fasse patienter.
De même je n'arrive pas à supprimer mon zip à la fin du téléchargement.
Mon zip se crée bien et se met au téléchargement, ça ya pas de soucis.
Pour le message d'attente j'ai pensé à du java mais pas moyen.

page.php
echo "<a href='download_site.php?archive=$archive&chemin=$racine'><img src='images/telecharger_min.jpg' alt='Télécharger le site' border=0></img></a><br><br>";
download_site.php
$file = $_GET['archive'];
$chemin=$_GET['chemin'];

require_once("fonctions/zip.php");

$file="TEMP_ZIP/".$file;
Zip($chemin,$file);
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
ignore_user_abort();
unlink($file);

Mammouth du PHP | 688 Messages

31 juil. 2015, 16:13

1. un onclick="attendre()" dans le <a> avec dans la fonction, un changement de statut pour un élément qui était auparavant caché.
2. il faut mettre unlink($file); avant exit

Petit nouveau ! | 6 Messages

03 août 2015, 11:41

Le n°2 fonctionne ok on est bon
Sinon dans ma balise <a> j'ai mis
onclick='document.getElementById('message').style.display='block'; return true;'
et dans ma page
<div id="message" style="display:none;">Veuillez patienter s.v.p.</div>
Mais quand je clique sur mon lien rien ne se passe, j'attend momn téléchargement mais le message ne s'affiche pas.
Par ailleurs, une fois mon zip téléchargé, est ce que le message va disparaître, je ne pense pas.

Je suis nulle en javascript, il me foudrait une petite barre de défillement qui passe devant tout.

Merci.

Petit nouveau ! | 6 Messages

28 août 2015, 11:20

Bonjour, Je relance car j'ai toujours pas trouvé de solution..

Petit nouveau ! | 9 Messages

30 août 2015, 20:38

Salut, tu peux donner aussi ton class zip.php pour tester

Petit nouveau ! | 6 Messages

31 août 2015, 09:54

Dans mon fichier zip.php il n'y a que ma fonction recursive qui permet de créer une archive zip avec une arborescence, je n'ai pas de soucis avec, elle fait bien sont boulot. Mon soucis c'est comment mettr een place tout ça pour faire patienter mon utilisateur lorsque cette archive se crée, elle peut mettre un peu de temps selon sa taille.

Petit nouveau ! | 9 Messages

31 août 2015, 13:41

bonjour,
malheureusement on peut pas vérifier avec javascript, ni avec php, si le ficher à été téléchargé parcque on a pas d'accès à système de ficher d'un client . Il faut utiliser flash ou java à mon avis.

ynx
Mammouth du PHP | 586 Messages

31 août 2015, 14:03

Salut,
Attention aux guillemets dans l'attribut onclick : utilises des doubles quotes pour délimiter la valeur de l'attribut si tu veux utiliser des simples quotes à l'intérieur (ou l'inverse) :
<a onclick="document.getElementById('message').style.display='block'; return true;">lien</a>

Petit nouveau ! | 6 Messages

31 août 2015, 16:45

Merci pour le problème j'avais trouvé pour le problème de guillemets, mon message s'affiche bien mais il ne disparait pas une fois le fichier téléchargé car la page principale page.php n'est pas rechargéé...