J'ai besoin du navigateur pour télécharger les fichiers image comme il le fait en cliquant sur une feuille Excel.
Existe-t-il un moyen de le faire en utilisant uniquement la programmation côté client?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.10.2.js">
$(document).ready(function () {
$("*").click(function () {
$("p").hide();
});
});
</script>
</head>
<script type="text/javascript">
document.onclick = function (e) {
e = e || window.event;
var element = e.target || e.srcElement;
if (element.innerHTML == "Image") {
//someFunction(element.href);
var name = element.nameProp;
var address = element.href;
saveImageAs1(element.nameProp, element.href);
return false; // Prevent default action and stop event propagation
}
else
return true;
};
function saveImageAs1(name, adress) {
if (confirm('you wanna save this image?')) {
window.win = open(adress);
//response.redirect("~/testpage.html");
setTimeout('win.document.execCommand("SaveAs")', 100);
setTimeout('win.close()', 500);
}
}
</script>
<body>
<form id="form1" runat="server">
<div>
<p>
<a href="http://localhost:55298/SaveImage/demo/Sample2.xlsx" target="_blank">Excel</a><br />
<a href="http://localhost:55298/SaveImage/demo/abc.jpg" id="abc">Image</a>
</p>
</div>
</form>
</body>
</html>
Comment cela devrait-il fonctionner en cas de téléchargement d'une feuille Excel (que font les navigateurs)?
javascript
jquery
html
Amit
la source
la source
download
attribut.Réponses:
En utilisant HTML5, vous pouvez ajouter l'attribut «télécharger» à vos liens.
<a href="https://stackoverflow.com/path/to/image.png" download>
Les navigateurs conformes inviteront alors à télécharger l'image avec le même nom de fichier (dans cet exemple image.png).
Si vous spécifiez une valeur pour cet attribut, cela deviendra le nouveau nom de fichier:
<a href="https://stackoverflow.com/path/to/image.png" download="AwesomeImage.png">
MISE À JOUR: Au printemps 2018 , ce ne sera plus possible pour le contre-origine
href
s . Donc, si vous souhaitez créer<a href="https://i.imgur.com/IskAzqA.jpg" download>
sur un domaine autre que imgur.com, cela ne fonctionnera pas comme prévu. Annonce d'abandons et de suppressions de Chromela source
J'ai réussi à faire fonctionner cela dans Chrome et Firefox également en ajoutant un lien vers le document.
la source
document.body.appendChild(link)
cela ne fonctionnera pas dans Firefox. Il est également bon de supprimer l'élément créé avecdocument.body.removeChild(link);
afterlink.click()
setTimeout( function () { link.parentNode.removeChild( link ); },10 );
la source
Mise à jour printemps 2018
Bien que cela soit toujours pris en charge, à partir de février 2018, Chrome a désactivé cette fonctionnalité pour le téléchargement d'origine croisée, ce qui signifie que cela ne fonctionnera que si le fichier se trouve sur le même nom de domaine.
J'ai trouvé une solution de contournement pour télécharger des images interdomaines après la nouvelle mise à jour de Chrome qui a désactivé le téléchargement interdomaine. Vous pouvez le modifier en une fonction adaptée à vos besoins. Vous pourrez peut-être obtenir l'image de type mime (jpeg, png, gif, etc.) avec quelques recherches supplémentaires si vous en avez besoin. Il existe peut-être un moyen de faire quelque chose de similaire avec les vidéos. J'espère que cela aide quelqu'un!
la source
Une approche plus moderne utilisant Promise et async / await:
puis
Trouvez la documentation ici: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
la source
la source
Ceci est une solution générale à votre problème. Mais il y a une partie très importante que l'extension de fichier doit correspondre à votre encodage. Et bien sûr, ce paramètre de contenu de la fonction downlowadImage doit être une chaîne encodée en base64 de votre image.
la source
En 2020, j'utilise Blob pour faire une copie locale de l'image, que le navigateur téléchargera sous forme de fichier. Vous pouvez le tester sur ce site .
la source
Essaye ça:
la source
la source
Vous pouvez télécharger directement ce fichier en utilisant la balise d'ancrage sans trop de code.
Copiez l'extrait et collez-le dans votre éditeur de texte et essayez-le ...!
la source
Qu'en est-il de l'utilisation de la fonction .click () et de la balise?
(Version compressée)
Vous pouvez maintenant le déclencher avec js. Il n'ouvre pas non plus, comme d'autres exemples, des fichiers image et texte!
(version js-function)
la source
Je l'ai trouvé
<a href="link/to/My_Image_File.jpeg" download>Download Image File</a>
N'a pas travaillé pour moi. Je ne sais pas pourquoi.
J'ai trouvé que vous pouvez inclure un
?download=true
paramètre à la fin de votre lien pour forcer un téléchargement. Je pense avoir remarqué que cette technique était utilisée par Google Drive.Dans votre lien, incluez
?download=true
à la fin de votre href.Vous pouvez également utiliser cette technique pour définir le nom de fichier en même temps.
Dans votre lien, incluez
?download=true&filename=My_Image_File.jpeg
à la fin de votre href.la source
Vous n'avez pas besoin d'écrire js pour ce faire, utilisez simplement:
Et le navigateur lui-même téléchargera automatiquement l'image.
Si pour une raison quelconque cela ne fonctionne pas, ajoutez l'attribut de téléchargement. Avec cet attribut, vous pouvez définir un nom pour le fichier téléchargeable:
la source
download
attribut n'est pas pris en charge dans tous les navigateurs.