Bonjour,
Je suis sur un projet qui me demande de créer un bouton de téléchargement d'une image depuis une base de données. Une fois l'utilisateur clique sur ce bouton, le téléchargement de l'image en question se lance automatiquement. Comment faire cela ?
J'ai trouvé le code suivant sur Google. Mais, après plusieurs tentatives et autres réponses que proposent d'autres site web, je ne suis pas toujours satisfaire.
Voici le code :
Quand j'ai essayé les deux, je reçois bien la valeur de
$_GET
mais, par contre, le téléchargement n'est pas démarré.
Que je dois-je faire ?
Merci
jordane45
Messages postés37538Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 7 juin 2023341
>
iKelSilver
28 déc. 2018 à 22:08
Il faut mettre le chemin vers l'image
L'url doit fonctionner aussi je pense.
Par contre, vu qu'il y a des slashes, essaye d'ajouter un urlencode http://php.net/manual/fr/function.urlencode.php Ou au pire, un addSlashes (mais dans ce cas, il faudra surement un stripslashes à la récupération du get )
Merci Jordane45,
J'ai essayé mais sans succès. Voici ce que j'ai enfin trouvé et qui a résolu mon problème:
<script>
You can try this to force download an image.
However you cannot download something that is not on your domain, unless you are using a domain which accepts cross origin requests (Eg:Imgur)
You may use the 'download' attribute of HTML5 but still you won't be able to load in cross origin image.
Also the below method will support legacy browsers as well
function forceDownload(link){
var url = link.getAttribute("data-href");
var fileName = link.getAttribute("download");
link.innerText = "Working...";
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = function(){
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL(this.response);
var tag = document.createElement('a');
tag.href = imageUrl;
tag.download = fileName;
document.body.appendChild(tag);
tag.click();
document.body.removeChild(tag);
link.innerText="Download Image";
}
xhr.send();
}
</script>
<a href="#" data-href='https://i.imgur.com/Mc12OXx.png' download="Image.jpg" onclick='forceDownload(this)'>Download Image</a>
28 déc. 2018 à 21:19
Merci pour la réponse. Mais, une inquiétude. Dans le lien Est-ce que je vais mettre seulement le nom de l'image ou plutôt le chemin complet de l'image ? Exemple : Quand j'ai essayé les deux, je reçois bien la valeur de mais, par contre, le téléchargement n'est pas démarré.
Que je dois-je faire ?
Merci
28 déc. 2018 à 22:08
L'url doit fonctionner aussi je pense.
Par contre, vu qu'il y a des slashes, essaye d'ajouter un urlencode http://php.net/manual/fr/function.urlencode.php
Ou au pire, un addSlashes (mais dans ce cas, il faudra surement un stripslashes à la récupération du get )
Essaye aussi le header
à la place .
29 déc. 2018 à 03:37
J'ai essayé mais sans succès. Voici ce que j'ai enfin trouvé et qui a résolu mon problème:
Merci beaucoup