Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lien télécharger image

Pour eviter le clic droit + enregistrer-sous

2 février 2007 à 11:47:00

Bonjour,

Je cherche à mettre un lien "Cliquez-ici pour télécharger cette image"
Le but: éviter le clic droit + enregistrer-sous

J'ai trouver un exemple qui je pense sera plus simple pour me faire comprendre: :lol:

Cliquez-ici pour télécharger l'image

Voila ce que j'aimerai arriver! j'ai chercher sur le forum et dans les tutos mais rien n'explique cette chose pourtant utile je trouve!

Pouvez-vous me guider sur la manière de procédé?

Merci beaucoup

Cordialement
Fredo
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 13:09:31

Salut,

<?php
$file = 'http://localhost/dir/img.jpg';

if(file_exists($file)){
        header('Content-Type: application/force-download');
        header('Content-Disposition: attachment; filename='.basename($file));
        readfile($file);
}
?>

Ce code est dangereux, si $file contient l'adresse d'une page php, celle-ci se téléchargera de la même manière. Je te conseille de faire une base de données contenant les adresses téléchargeables et un id pour chacune. Les liens étant de la forme : http://adresse/ma_page_de_download.php?file=12345 où file est un id.
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 13:34:20

Bonjour,

merci de m'avoir répondu!

Ce code fonctionne en cliquant sur un lien? si oui comment mettre le nom du lien dans ce code?


Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 13:44:34

Tu peux faire une liste tout simple de toutes les images à télécharger et, quand tu cliques d'ici, ça t'emmene à la page de download, avec une variable en $_GET qui contiendra l'id de l'image à télécharger. Ensuite, tu fais des vérifs, puis tu télécharges :)
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 13:49:30

Comme je l'ai dit, pour que le code soit sécurisé, il faut faire une table contenant 2 champs : id et adresse. Les liens sont du type :
<a href="http://adresse/ma_page_de_download.php?file=12345">Cliquez-ici pour télécharger l'image</a>

et ma_page_de_download.php contient :
<?php
if(!isset($_GET['file'])){
    die('Erreur : aucun fichier spécifié.');
}

mysql_connect('...','...','...');
mysql_select_db('...');
$result = mysql_query('SELECT adresse FROM ta_table WHERE id='.(int)$_GET['file']);

if(mysql_num_rows($result)<1){
    die('Erreur : fichier introuvable.');
}

$file = mysql_result($result,0);

if(!file_exists($file)){
    die('Erreur : le fichier n\'existe plus.');
}

header('
Content-Type: application/force-download');
header('
Content-Disposition: attachment; filename='.basename($file));
readfile($file);
?>
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 13:51:23

En même temps, sur le lien du tuto, c'est déjà expliqué ça ^^
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 14:00:14

Ah oui en effet :p désolé, j'avais pas lu le tuto.
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 16:36:08

Bonjour,

Deja merci de votre aide!

Bon alors quand dans la table un id n'existe pas j'ai:

Erreur : fichier introuvable.

Ce qui est normal!!

Mais quand un un id existe j'ai ce message au lieu du téléchargement:

Erreur : le fichier n'existe plus.

Comment ça se fait que j'ai ce message au lieu du téléchargment?

Merci beaucoup de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 16:56:15

Cette erreur ne s'affiche que si le fichier dont l'adresse est récupérée dans la table n'existe pas.
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 17:15:18

bien si elle existe bien et elle est correct! je ne comprend!

Chez vous le code fonctionne bien?
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 17:31:03

En fait, le problème vient du fait que pour les versions antérieures à PHP 5, file_exists() ne prend comme paramètre que des adresses relatives.
Avec PHP 4, si tu supprimes les 3 lignes :
if(!file_exists($file)){
    die('Erreur : le fichier n\'existe plus.');
}

le problème ne se posera plus mais si le fichier n'existe pas, le fichier downloadé sera illisible.
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 17:51:01

Bonjour,

Maintenant j'ai bien la fenetre qui apparait pour le téléchargement mais j'ai cette erreur:

Internet explorer ne peut pas télécharger download.php


Sinon le reste fonctionne (j'ai bien le message d'erreur quand une image n'existe pas)

Merci de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 21:04:25

Citation : Chezfredo

Cliquez-ici pour télécharger l'image



Intelligent le système, le webmaster, via un .htaccess a associer le format .jpg à une archive rar. Les navigateurs téléchargent automatiquement les archives rar, mais le fichier est un jpg.

AddType application/x-rar-compressed .jpg .jpeg .JPG .JPEG


Un joli tuto sur le sujet ici.
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2007 à 14:23:20

Bonjour,

j'ai suivit le tuto mais cela ne fonctionne pas pour autant!

On ne peut pas corriger l'erreur qu'il me met:

"Internet explorer ne peut pas télécharger download.php"

Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2007 à 18:12:04

Bonjour,

je viens d'essayer de mettre le code dans la page download.php mais cela ne fonctionne toujours pas?

Quelqu'un à réussi ou à une solution?

Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
6 février 2007 à 11:01:52

Bonjour,

toujours personne à trouver la solution?

Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
8 février 2007 à 17:47:29

Bonjour,

Voila j'ai modifié le code et maintenant j'ai le problème suivant:

J'ai bien la fenetre de téléchargment qui arrive mais pour enregistrer le fichier: download.php?file=18

Ce qui n'est pas bon (ce n'est pas l'image donc imposible d'enregistrer)

Voici le code:

<?php
if(!isset($_GET['file'])){
    die('Erreur : aucun fichier spécifié.');
}

mysql_connect('localhost','........','........');
mysql_select_db('........');
$result = mysql_query('SELECT url FROM gimagelist WHERE id='.(int)$_GET['file']);

if(mysql_num_rows($result)<1){
    die('Erreur : fichier introuvable.');
}

$file = mysql_result($result,0);



header('Content-Disposition: attachment; filename=.basename($file)');
readfile($file);
?>


Que dois-je faire pour que cela fonctionne?

Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
10 février 2007 à 15:01:53

Bonjour,

Petit up pour dire que je suis toujours à la recherche de corriger mon problème!

Merci beaucoup de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2007 à 12:26:48

Bonjour,

Re petit up pour dire que je suis toujours à la recherche de corriger mon problème!

Merci beaucoup de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
14 février 2007 à 13:26:09

Bonjour,

Re petit up pour dire que je suis toujours à la recherche de corriger mon problème!

Merci beaucoup de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2007 à 21:28:18

Bonjour,

Re petit up

Merci beaucoup de votre aide car je suis toujours bloquer!
  • Partager sur Facebook
  • Partager sur Twitter
18 février 2007 à 21:19:57

Bonjour,

Re petit up

Je commence à croire que cela est presque impossible à faire!

Merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter
19 février 2007 à 1:10:19

le code est bon. le nom du fichier est mauvais mais c'est bien l'image qui est téléchargée.

t'as fait une erreur de copier/coller sur le code header qui t'a été donné... un bete probleme de concatenation !
  • Partager sur Facebook
  • Partager sur Twitter
19 février 2007 à 21:54:07

Bonsoir,

je vien de tenter avec le bon code cette fois mais cela ne fonctionne toujours pas!

Merci beaucoup pour votre aide
  • Partager sur Facebook
  • Partager sur Twitter

Lien télécharger image

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown