PHP forcer téléchargement .xlsx fichier corrompu

Je travaille sur un site qui permet aux enseignants de télécharger les documents et les étudiants de télécharger. Cependant, il y a un problème. Microsoft Word (.docx) téléchargement des fichiers parfaitement, mais lors du téléchargement d'un fichier excel (xlsx) fichier excel donne un "Ce fichier est corrompu et ne peut pas être ouvert" boîte de dialogue. Toute aide à ce serait grandement apprécié!

Mon code de téléchargement comme suit:

case 'xlsx':

    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Pragma: no-cache');
    readfile('./uploads/resources/courses/' . $filename);

break;
N'importe quel espace en cours de sortie par exemple, avant la balise d'ouverture? Existe-il des mises en garde/avis, ceux qui vont le faire le fichier corrompu. Télécharger le fichier à partir d'une source FTP et de l'ouvrir pour vérifier le fichier d'origine n'est pas corrompu.
Quel est le fichier téléchargé? Est-il vide? Est-il coupé? Dans ce dernier cas, vous pouvez essayer d'envoyer un Content-Length en-tête. Une autre question pourrait être que le téléchargement prend trop de temps et PHP jette un délai d'attente. Utilisation set_timeout() pour augmenter le délai d'attente.
Ce qui se passe après cette switch bloc? Habituellement, vous exit; après l'appel de readfile.
L'espace blanc n'affectent pas le fichier sur le serveur.... c'est l'espace ou une NOMENCLATURE ou un écho messages/avertissements/erreurs à partir de votre script qui sont envoyés à php://output avec le fichier lui-même qui est la cause la plus probable
Vraiment confus maintenant! Notepad++ est dit que les deux fichiers de match!

OriginalL'auteur cbenjafield | 2012-12-18