Nous utilisons asp.net et C# 3.5 implémentant un site web utilisant beaucoup de jQuery. Nous voudrions télécharger un img de la fenêtre du navigateur, mais (et voici l'astuce) dans un bouton clic (en plus de clic droit Enregistrer sous) ...Télécharger l'image en utilisant Javascript/jQuery
Avant d'entrer dans, je dois dire que nous savons qu'il s'agit d'un tag img et à partir de l'extrémité avant, nous pouvons facilement télécharger l'image en utilisant le clic droit enregistrer sous. La seule raison pour laquelle nous voulons télécharger l'image d'un (par exemple) bouton clic est parce que sur le site que nous ont des boutons de téléchargement pour télécharger le contenu (comme DataTable fichiers Excel et pdfs, etc.) et nous de préférence comme pour garder la norme sur le site Web .
Nous produisons des graphiques en utilisant Microsoft Chart Control ce qui rend les graphiques à l'écran plutôt bien. Cela rend une image sur l'écran comme indiqué ci-dessous dans un exemple (en utilisant Firebug)
<div align="center" style="margin-top: 30px; margin-bottom: 30px;" id="graph">
<img style="border-width: 0px; height: 500px; width: 465px;" alt="Chart Loading" src="/Telma.UI/ChartImg.axd?i=chart_194e3c04c11240a7b7fba3e3e1d76d39_2.jpeg&g=338b984aaab84b1da9a63db3150211e2" borderdashstyle="Solid" id="ctl00_Chart1">
</div>
La balise img est généré par le contrôle graphique qui, dans le asp est dans une balise <asp:Chart>
.
Maintenant, comme une note latérale importante que nous avons dans le web.config
<add key="ChartImageHandler" value="storage=session;privateImages=true;timeout=10;deleteAfterServicing=false;WebDevServerUseConfigSettings=true;" />
Il y a un bug connu avec MS Control Chart que si vous enregistrez l'image dans les variables de session ou de la mémoire, que l'image est seulement accessible une fois et non persistant. Nous n'avons pas d'emplacement physique pour l'image lors de sa création (et le plus souvent, le contrôle de graphique désoriente l'image). Ce dont nous avons besoin, c'est d'une méthode côté client pour télécharger ce contenu d'image à partir de l'écran tel qu'il est rendu, mais sans avoir accès à l'image physique à l'extrémité arrière. Nous ne souhaitons pas utiliser la propriété de contrôle de graphique:
ImageStorageMode="UseImageLocation"
Des idées? Rappelez-vous, nous essayons d'ajouter des fonctionnalités supplémentaires que juste un clic droit enregistrer sous.
EDIT: Cela doit fonctionner dans Firefox et IE.
La meilleure solution possible ressemble maintenant à un nouveau rendu du graphique (c'est-à-dire une nouvelle exécution du sql!), à moins qu'il n'y ait un moyen de télécharger du contenu depuis le cache des navigateurs via javascript – Neil
? Explication en édition:] –
Bonjour Adam, comme l'a dit Neil, c'est une solution plutôt sympa. Mais question, y a-t-il des problèmes de sécurité étant donné que nous utilisons maintenant l'url pour désigner un emplacement de fichier? – Kamal