Télécharger une image sans un clic droit

Résolu/Fermé
bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 - 26 mai 2008 à 10:07
 Barbagroupi - 8 oct. 2013 à 13:59
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

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
26 mai 2008 à 11:05
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
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 ;)
1
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
19 juil. 2008 à 17:31
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();
}
?>
0
princesse95 > PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009
27 févr. 2009 à 16:43
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
0
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 !
0
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
0
babyloon Messages postés 33 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 21 octobre 2008 1
14 oct. 2008 à 21:24
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!!..
1
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.
0
tropare Messages postés 84 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 9 mars 2009 17
26 mai 2008 à 10:24
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 16
26 mai 2008 à 10:38
ok ouai, j'crois qu'y a pas d'autres solutions assez simple de toute façon...
0
bobenausaure Messages postés 228 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 27 janvier 2013 16
26 mai 2008 à 11:14
ah bah ouai, là, ya pas mieux !!

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

Merci beaucoup PhP.
0
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 ;)
0
Syl Vie Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 9 septembre 2008 1
9 sept. 2008 à 16:17
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+
0
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 !
0