PHP fichier ZIP télécharger

Voici un code qui permet de télécharger des fichiers de pièce jointe à partir d'un serveur imap. Presque tous les types de fichiers (pdf, doc, xls, etc) sont en train d'être téléchargé correctement, où, comme certains fichiers zip donner le message d'erreur suivant:

"L'archive est au format inconnu ou endommagé"

Code:

//data from imap server
$name = "xyz 123.zip";
$type = "APPLICATION";
$subtype = "ZIP";
$encoding = "BASE64";
$body = imap_base64($data);

header('Content-Description: File Transfer');
header('Content-Type: '. $type .'/'. $subtype);
header('Content-Disposition: attachment; filename='.$name);
header('Content-Transfer-Encoding: '.$encoding);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
echo $body;

Aussi, si je reprends les données et de les convertir en un fichier à l'aide de:

http://www.motobit.com/util/base64-decoder-encoder.asp

Le fichier est téléchargé correctement. Donc pas de problème à obtenir le fichier à partir du serveur.
Où vais-je tort??

ce que je crois, c'est que votre fichier zip n'est pas entièrement téléchargé, de sorte que le unzipper programme montre que le type d'erreur
comment puis-je vérifier que. j'ai essayé de le télécharger plusieurs fois. de plus, la taille est la même que celle sur le serveur. et ça marche si je imprimer le fichier encodé et décoder manuellement.
le code que vous fournissez ne semblent pas être liées à l'erreur lors de décompresser. de vérifier la partie de code qui effectue le téléchargement pour obtenir les $données
vérifiez la taille du fichier (taille en octets), et la somme de contrôle. si la taille du fichier en octets du fichier téléchargé et de la taille du fichier en octets du fichier sur le serveur sont les mêmes; puis vérifier la somme de contrôle (md5 ou autre); si même les sommes de contrôle sont les mêmes => je crois que le fichier d'origine sur le serveur est endommagé.
base64_decode fait le tour. Merci beaucoup @Paul.

OriginalL'auteur victor_golf | 2012-05-21