Forcer le téléchargement d'un fichier .pdf

[Fermé]
Signaler
Messages postés
52
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
19 septembre 2009
-
 Meziane zizou -
Bonjour ,
Je créé actuellement un site et sur une de mes pages , j'ai créé une liste déroulante pouvant permettre de télécharger des cours en .pps et .pdf.

Pour les .pps j'ai eu du mal mais c'est ok maintenant tandis que pour les .pdf , il m'ouvre bien la fenetre de telechargement de mon navigateur avec le logiciel adobe. Cependant quand je veux le lire directement ou quand il est téléchargé, adobe reader s'ouvre mais avec un message d'erreur:

"Adobe n'a pas pu ouvrir le fichier 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)."

Sur mon fichier "redirection_navigation.php" j'ai inscrit ce code là:

Code :

<?php
function fct_download($nom_fichier)
{
// infos du fichier
$fichier = "/Telechargements/Cours_Systemes_et_reseaux/$nom_fichier";
// téléchargement du fichier
header('Content-disposition: attachment; filename='.$nom_fichier);
header('Content-Type: application/pdf');
header('Content-Transfer-Encoding: binary\n');
header('Content-Length: '.filesize($fichier));
header('Pragma: no-cache');
header('Cache-Control:must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($fichier);
}

switch($_POST['Cours'])
{
case "systemes_exploitation":
header("Location:http://pc.fastoche.free.fr/Telechargements/Cours_Systemes_et_reseaux/Systemes_exploitation.pps");
break;
case "presentation_reseaux": header("Location:http://pc.fastoche.free.fr/Telechargements/Cours_Systemes_et_reseaux/Presentation_des_Reseaux_source_profs_d_info_BTS.pps");
break;
case 'Reseau_Introduction': fct_download('Reseau_Introduction.pdf');
break;
}
?>


Que puis-je modifier pour que ce fichier .pdf soit lisible une fois télécharger par les visiteurs?

MErci d'avance

Bonne journée

8 réponses

As-tu trouver la solution car j'ai la même erreur que toi ?

erreur: "Adobe n'a pas pu ouvrir le fichier 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)."


Merci de répondre
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Salut!

As tu résolu ton problème de pièces jointes? J'ai le même problème et je n'arrive pas à le résoudre! Je ni comprend rien avec leur charabia sur le forum!
Si tu peux m'éclairer ce serai cool, merci!

j'ai la même erreur quand je lance un fichier flash ..erreur: "Adobe n'a pas pu ouvrir le fichier 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)."
Messages postés
13
Date d'inscription
dimanche 7 août 2011
Statut
Membre
Dernière intervention
11 avril 2012
9
Bonjour, je pense avoir la solution à votre problème !

(j'explique en partie pourquoi votre fichier pèse 0 octet ! ;) )
https://webinfobazar.com/header-location-telechargement-dun-fichier-php/

Pour ce qui concerne le pdf, je devrais incessamment sous peu mettre en ligne un article sur la création et le téléchargement d'un pdf ;)
pareille que vous les gars, je peux les lire directement dans le naviguateur,

par contre , quand il ya la boîte de téléchargement, j'ai le même message que vous :(

Je ne vois pas d'où ça vient :)
si ton site est en php cherche pas plus loin ta réponse est ici : http://naeh.net/forcer-le-telechargement-dun-fichier-avec-php/

c'est valable pour tous types de fichiers.
Slt à tous, moi je n'arrivais ni à lire, ni à télécharger des fichiers pdf du net comme beaucoup d'entre vous . J'ai tout simplement désinstallé carrément mon logiciel 'Internet Download Manager', et dépuis, je n'ai plus aucun problème avec les fichiers pdf. Après cela, pour télécharger directement le document pdf lorsque vous l'avez ouvert, vous cliquez sur << fichier >> en haut à gauche du document pdf puis sur << enregistrer une copie...>> puis vous verez la suite.

Tout simplement, il faut l'enregistrer dans un dossier. Par la suite, il s'ouvre normalement ;)
La solution est peut-être du côté su forum Site du Zéro :
http://www.siteduzero.com/forum-83-653650-p1-telechargement-fichier-pdf.html
J'ai eu le même problème.
J'ai appliqué la solution préconisée : dans le fichier où se trouve le code php il ne faut que ce code php et rien d'autre.
le fichier ne doit donc contenir que quelque chose du type :

<?php
	if (isset($_GET['pdf']))
	{
		if (file_exists($_GET['pdf']))
		{
			$ext = pathinfo($_GET['pdf'], PATHINFO_EXTENSION);
			if ($ext == "pdf")
			{
				header("Content-Type: application/pdf");
				header("Content-Length: ".filesize($_GET['pdf']));
				header("Content-Disposition: attachment; filename=".$_GET['pdf']);
				header('Pragma: public');
				header('Expires: 0');
				readfile($_GET['pdf']);
			}
		}
	}
?>
Messages postés
759
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
22 janvier 2014
166
Même problème que vous...
Une solution?

Merci
Bonjour,

Pour ceux qui cherchent et tomberaient là dessus: il faut mettre un "exit();" après le readfile ;)

Voilaaaa
> bethany
ça ne semble pas changer quoi que ce soit en ce qui me concerne le fichier downloadé pèse toujours 0 octet
Idem pour moi...
retirer le :
header("Content-Length: ".filesize($_GET['pdf']));