Dans un seul script, je dois faire ce qui suit:Php: Comment gérer le traitement de fichiers et les opérations de téléchargement dans un seul script?
- créer un zip de fichiers dans un répertoire
- forcer le téléchargement du nouveau créer zip
Mon problème est que chaque fois que j'essaye de le faire dans un seul script, le zip téléchargé est corrompu (la taille du fichier est correcte cependant). Si je déclenche les processus dans deux appels de script distincts, le fichier zip téléchargé est correct.
Je suppose que le problème est que le processus d'enregistrement au format zip n'est pas complètement terminé avant le début du téléchargement. Etrangement, il ne résout pas le problème à insérer un sommeil (3) entre les processus ... Le code ci-dessous. Comment s'assurer que le fichier zip est complètement terminé avant que le téléchargement forcé commence?
Cordialement/Jonas
// 1. create a zip
$createZipFile = new CreateZipFile('temp.zip');
$createZipFile->zipDirectory('temp/', '.');
$createZipFile->saveZipFile();
sleep(3); // <-- Doesn't matter!
// 2. force zip download
$fileServer = new FileServer();
// Line below gives a corrupted zip when run in same script as 1.
$fileServer->forzeDownload('temp.zip');
Essayez d'ouvrir le fichier zip corrompu dans un éditeur de texte - il peut révéler le point où quelque chose ne va pas. Les chances sont qu'il ne contienne que 404 pages (ce qui n'est pas un fichier zip bien formé, évidemment). – JorenB
Vous avez probablement une sortie supplémentaire (peut-être un seul espace/saut de ligne avant le bloc PHP) qui corrompra vos données. – Gumbo