OVH Cloud OVH Cloud

[debutant] erreur dans script forcer download ???

2 réponses
Avatar
Klank
Hi
J'essaye de forcer le téléchargement d'un fichier sur mon site (j'ai trouvé
des scrips mais je n'y arrive pas... ) Je sais que je peux faire un fichier
zip mais j'aimerais savoir ou il y a une erreur.
Le site est sur chez.com et j'ai activé l'utilisation du php (3 ou 4)

J'ai un fichier "fichedecandidature.doc" dans le même repertoire que les
fichiers test.html (la page ou il y a le lien vers le fichier à telecharger)
et telecharger.php (le php pour forcer. source ci-dessous) Lorsque je clique
sur le lien j'ai un "parse error on line 4 dans telecharger.php
Le problème vient-il de la ligne href ? quel est le chemin à spécifier si le
fichier est dans le même répertoire ?
je dois mettre &chemin=/\ ou &chemin="" ou &chemin=./ ou
&chemin=www.chez.com/lyceedestavanger/ ou
&chemin="www.chez.com/lyceedestavanger/" ou ??
<a
href="telecharger.php?Fichier_a_telecharger=fichedecandidature.doc&chemin=/\
">Télécharger</a>
Si le href est bon que dois-je modifier
Merci

le script de telecharger.php est ici :
<?php

// on essaie de reconnaitre l'extension pour que le
téléchargement corresponde au type de fichier afin
d'éviter les erreurs de corruptions

switch(strrchr(basename($Fichier_a_telecharger), "."))
{

case ".gz": $type = "application/x-gzip"; break;
case ".tgz": $type = "application/x-gzip"; break;
case ".zip": $type = "application/zip"; break;
case ".pdf": $type = "application/pdf"; break;
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
case ".txt": $type = "text/plain"; break;
case ".htm": $type = "text/html"; break;
case ".html": $type = "text/html"; break;
default: $type = "application/octet-stream"; break;

}

header("Content-disposition: attachment;
filename=$Fichier_a_telecharger");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: $type\n"); //
Surtout ne pas enlever le \n
header("Content-Length: ".filesize($chemin .
$Fichier_a_telecharger));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0,
pre-check=0, public");
header("Expires: 0");
readfile($chemin . $Fichier_a_telecharger);
?>

-------
Le sourse de test.html est ici :

<html>
<head>
<title>Test du téléchargement d'un fichier</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>

<body>

<a
href="telecharger.php?Fichier_a_telecharger=fichedecandidature.doc&chemin=/\
">Télécharger</a>


</body>
</html>

2 réponses

Avatar
Paul Delannoy
Klank a écrit:
Hi
[...]

j'ai un "parse error on line 4 dans telecharger.php
Le problème vient-il de la ligne href ?
Oui et Non : c'est sans doute parce que tu ne récupères pas la valeur de

ton paramètre....
fait : $Fichier_a_telecharger=$_GET['Fichier_a_telecharger'];
avant toute chose dans ton script php.

quel est le chemin à spécifier si le
fichier est dans le même répertoire ?
je dois mettre &chemin=/ ou &chemin="" ou &chemin=./ ou
&chemin=www.chez.com/lyceedestavanger/ ou
&chemin="www.chez.com/lyceedestavanger/" ou ??
<a
href="telecharger.php?Fichier_a_telecharger=fichedecandidature.doc&chemin=/
">Télécharger</a>
Ca dépend des parametres du serveur. Le plus courant c'est ./


Avatar
Klank
Cela n'a pas marché...
J'ai toujours la même erreur

Paul Delannoy a écrit dans le message :
Le problème vient-il de la ligne href ?
Oui et Non : c'est sans doute parce que tu ne récupères pas la valeur de

ton paramètre....
fait : $Fichier_a_telecharger=$_GET['Fichier_a_telecharger'];
avant toute chose dans ton script php.


href="telecharger.php?Fichier_a_telecharger=fichedecandidature.doc&chemin=/


">Télécharger</a>
Ca dépend des parametres du serveur. Le plus courant c'est ./

J'ai ecris :

href="telecharger.php?Fichier_a_telecharger=fichedecandidature.doc&chemin=./
">Télécharger</a>