2010-08-16 13 views
1

J'ai implémenté un script de téléchargement utilisant des en-têtes PHP pour télécharger des fichiers PDF. Mon script fonctionne bien et télécharge le fichier PDF correspondant également dans mon localhost mais ce script ne fonctionne pas sur mon serveur.Le téléchargement de fichiers PDF en utilisant PHP est corrompu dans le serveur

Mon code est:

header("Content-Disposition: attachment; filename='dfile.pdf'"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-type: application/pdf;"); 

readfile("http://www.education.gov.yk.ca/pdf/pdf-test.pdf"); 

Dans mon navigateur de fichiers du serveur apparaît bien et le téléchargement du fichier aussi dfile.pdf, mais si je tente d'ouvrir le fichier téléchargé puis je reçois un message d'erreur de the file has been damaged . Un de mes paramètres de serveur à l'origine de ce problème ou autre?

Toute suggestion pour résoudre ce problème est très appréciable.

Note: Je pense que cela peut être un problème avec mes paramètres PHP du serveur, quelqu'un peut-il me dire si la fonction "readfile" nécessite un paramètre PHP pour activer dans mon serveur?

Merci à l'avance, Siva ...

+0

Peut-être plusieurs raisons. Tout d'abord, trouvez des indices sur la façon dont le fichier est endommagé. Est-ce zéro octets? Voyez-vous des erreurs ou des avertissements en texte brut lorsque vous l'ouvrez dans un éditeur de texte? etc. – zaf

+0

TMK, pas spécifique à PHP5. http://php.net/manual/en/function.readfile.php http://php.net/ChangeLog-5.php – TheLQ

Répondre

0

Ce problème est dû aux paramètres PHP de mon serveur, le paramètre 'allow_url_fopen' n'est pas activé sur mon serveur. Je gère cette situation en utilisant le CURL, de toute façon merci pour tout votre soutien.

3

Je pense que PHP émet un avertissement avant corps de fichier PDF. Regarde ça.

+0

Je ne suis pas en mesure d'ouvrir le fichier PDF téléchargé. Lors de l'ouverture du fichier, je reçois un message d'erreur indiquant que 'Adobe Reader n'a pas pu ouvrir "dfile.pdf" car il ne s'agit pas d'un type de fichier pris en charge ou parce que le fichier a été endommagé. – Siva

+2

Vous pouvez l'ouvrir dans n'importe quel éditeur hexadécimal ou texte pour voir s'il y a des choses non-PDF au début. –

+0

Ouais ouvert avec l'éditeur de texte (pavé de texte et pavé de texte), rien n'apparaît. Le fichier téléchargé est de la taille '0 KB' sans données. – Siva

0

Essayez d'utiliser ce code:

$file = 'monkey.pdf'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
}