Télécharger une image sans un clic droit

[Résolu/Fermé]
Signaler
Messages postés
226
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
27 janvier 2013
-
 Barbagroupi -
Bonjour,

Sur mon site, je souhaite créer un lien permettant de télécharger une image. Mais lorsque l'utilisateur clique dessus, cela affiche l'image et ne la télécharge pas. Pour la télécharger, il faut faire Clic droit - Enregistrer sous...

Y a-t-il un autre moyen pour la télécharger directement sans l'afficher et faire Enregistrer sous... ??

Merci d'avance.
Amicalement.

9 réponses

Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
607
Bjr

Si tu utilises PHP alors tu peux essayer


test_envoi.php

<html>
<body>
<a href="envoi_image.php?filename=mon_image.jpg">Cliquer ici pour télécharger l'image</a>
</body>
</html>




envoi_image.php

<?php
if (isset($_GET["filename"]))
{
	$filename=$_GET["filename"];

	// Envoi du fichier
	header('Content-Transfer-Encoding: none');
	header('Content-Type: application/octetstream; name="'.$filename.'"');
	header('Content-Disposition: attachment; filename="'.$filename.'"');
	header('Content-length: '.filesize($filename));
	header("Pragma: no-cache"); 
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
	header("Expires: 0"); 
	@readfile($filename) OR die();
}		
?> 	

2
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Bonjour !

J'ai passé au moins 5 heures à chercher comment faire ça sans Javascript....
et je tombe là dessus......que du bonheur ! merci beaucoup pour l'astuce PhP !

Désolé de faire remonter le post juste pour ça, mais je me pose une question. Ca fonctionne impeccablement, mais j'ai choisi de mettre mon image dans un dossier au même niveau que les pages PHP...
Pas de soucis pour créer le lien...là ça marche toujours, mais le fichier se trouve renommé avec comme suffixe, le nom de ce "sous dossier".
Ce n'est pas très embêtant après tout, mais j'aimerais bien comprendre pourquoi et je n'y arrive pas. Si vous aviez une piste, ce serait sympa.
Merci d'avance ;)
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
607
Bjr

Evidemment car il faut conserver uniquement le nom du fichier : donc si $filename contient un chemin il suffit de le supprimer



<?php
if (isset($_GET["filename"]))
{
$filename=$_GET["filename"];
// ne conserver que le nom du fichier : le nom que verra s'afficher l'utilisateur
$uploadname=basename($filename);

// Envoi du fichier
header('Content-Transfer-Encoding: none');
header('Content-Type: application/octetstream');
header('Content-Disposition: attachment; filename="'.$uploadname.'"');
header('Content-length: '.filesize($filename));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
@readfile($filename) OR die();
}
?>
>
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009

Bonjour Ca marche nickel merci pour le code que j'ai eu du mail à trouver. Par contre, une fois l'image téléchargée, je ne peux rien faire. Elle ne s'ouvre pas et un message me dit que le fichier peut etre corrompu. Donc manque t-il quelque chose ? Merci
C'est vieux je sais bien mais j'avais le même problème que Princesse 95... pas moyen d'ouvrir mon fichier image, qui se trouvait également dans un sous dossier, avec les même erreurs (image trop grande, corrompue...)...
en fait le pb n'est pas là : il faut que le script, qui contient des header, soit placé avant tout code html. et tout marche impec ! en effet, si tu ouvres ton fichier jpeg dans un bloc notes (notepad ++ par exemple ou autre) tu reconnaîtras certainement au début du script affiché ton code ! d'où l'image trop grosse...etc.
Voilou, faut le r'monter quoi !
Moi c'était la ligne header('Content-length: '.filesize($filename)); qui posait problème et générait un fichier corrompu. une fois supprimée, plus de pb
Messages postés
33
Date d'inscription
jeudi 25 septembre 2008
Statut
Membre
Dernière intervention
21 octobre 2008
1
bonjour!

Je suis moi aussi hyper heureuse d'être tombée sur cette solution car celà fé trop de temps que je cherchais comment faire pour ouvrir cette fenêtre de téléchargement!!
Merci bcp tu me sauves!! :)))

Seulement, j'ai un tout ti problème au niveau du nom de mon image. Mes images viennent de ma base de données et sont dans une région répétée.
le nom de chaque image est donc : fondecran_".$id.".jpg

Lorsque je mets <a href="download.php?filename=fondecran_".$id.".jpg"> comme nom d'image et ke je veux télécharger l'image, il ne me met que "fondecran_" sur la fenêtre de téléchargement...blurps..
Sais-tu comment faire pour soit convertir le nom soit ce ke je dois mettre exactement à la place du nom de l'image pour ke celà fonctionne correctement,,?

Je t'en serai vmt reconnaisssante!!
Merci d'avance!!..
donne déjà le code de connexion et celui dans lequel tu traites $id.
mais je peux déjà te dire que c parce que ta variable est vide au moment du téléchargement.
Messages postés
84
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 mars 2009
16
il faut que tu mette limage comme lien de telechargement mais je n'est jamais essayé donc jpe pa te dire sans testé mé de tt façon sa va pa lé tué de faire un clic droit lol
Messages postés
226
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
27 janvier 2013
16
ok ouai, j'crois qu'y a pas d'autres solutions assez simple de toute façon...
Messages postés
226
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
27 janvier 2013
16
ah bah ouai, là, ya pas mieux !!

c'est exactement c'que j'voulais !!

Merci beaucoup PhP.
Merci pour ta réactivité PhP !

En plus la solution est simple ! Je débute en Php et je me rends compte qu'il y a toujours une solution déjà prévue pour beaucoup de cas....vraiment sympa ce Php !....
Merci encore pour ton aide rapide ;)
Messages postés
5
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
9 septembre 2008
1
pour télécharger des images sans faire un clic droit, tu peux aussi utiliser OutWit Hub. C'est une nouvelle extension firefox qui sert à récupérer des images, des photos, des adresses e-mails, etc en très peu de clics !
vous pouvez le télécharger sur mozilla.org.

a+
Attention à ce script si vous utilisez un CMS, ou si vous avez des choses à cacher sur votre site, par exemple en remplaçant le nom du fichier dans l'url, il permet de télécharger n'importe quel fichier (sauf restrictions ACL) depuis le site, comme le fichier contenant le mot de passe d'accès à mysql par exemple (wp-config.php), http://exemple.com/send-file.php?filename=../../cheminverslefichierconvoité.xxx !