Pavulon

Inscris le 09/03/2008 à 11:23
  • Nombre de sujets
    1
  • Nombre de messages
    5
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
Pavulon
le 09/03/2008 à 11:59
Forcer le téléchargement d'un pdf
Bonjour à tous

Sur une page.php je propose un lien pour visualiser un fichier PDF (qui fonctionne sans problème) et un lien pour forcer le téléchargement du même fichier PDF.

J'apprends PHP j'ai donc fait des recherches puis j'ai essayé ce que j'ai trouvé.

1°) - La première méthode:
<?php
//Envoyer l'en-tête d'attachement.
$header = "Content-Disposition: attachment; ";
$header .= "filename=$nomFichier\n";
header($header);
//Envoyer l'en-tête de type MIME (ici pdf).
header("Content-Type: application/pdf\n");
//Envoyer le document. Pas d'encodage magic_quotes.
set_magic_quotes_runtime(0);
readfile($path.$nomFichier);
?>


2°) - La seconde :
<?php
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

//Use the switch-generated Content-Type
header("Content-Type: application/pdf;");

//Force the download
$header="Content-Disposition: attachment; filename=".$nomFichier.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$poids);
@readfile($path.$nomFichier);
exit();
?>


3°) - La troisième :
<?php		header('Content-Type: application/octet-stream');
header('Content-Length: '.$poids);
header('Content-disposition: attachment; filename='.$nomFichier);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($path.$nomFichier);
exit();
?>



Puis en localhost je teste. À chaque fois, le lien propose bien de télécharger le fichier. Si j'accepte j'ai une petite fenêtre avec une barre verte de progression du téléchargement. Je retrouve bien le fichier "téléchargé" dans le répertoire du disque dur où a été défini l'enregistrement du téléchargement avec le bon nom et la bonne taille de fichier. Mais à chaque fois que je tente d'ouvrir ce fichier (dont l'original bien sûr fonctionne parfaitement), je reçois le message suivant :

"Acrobat n'a pas pu ouvrir exemple.pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement, par exemple). Pour créer un document Adobe PDF, ouvrez l'application source, puis imprimez le document vers Adobe PDF."

Par avance merci.

Ses derniers messages sur les forums

forum

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours