Comment puis-je demander un téléchargement à un utilisateur lorsqu'il clique sur un lien.
Par exemple, au lieu de:
<a href="uploads/file.doc">Download Here</a>
Je pourrais utiliser:
<a href="#">Download Here</a>
$('a').click... //Some jquery to download the file
De cette façon, Google n'indexe pas mes fichiers HREF et privés.
Cela peut-il être fait avec jQuery, si oui, comment? Ou est-ce que cela devrait être fait avec PHP ou quelque chose à la place?
Réponses:
Je pourrais suggérer ceci, comme une solution plus gracieusement dégradante, en utilisant
preventDefault
:Même s'il n'y a pas de Javascript, au moins de cette façon, l'utilisateur recevra des commentaires.
la source
Si vous ne voulez pas que les moteurs de recherche indexent certains fichiers, vous pouvez utiliser le fichier robots.txt pour dire aux web spiders de ne pas accéder à certaines parties de votre site Web.
Si vous comptez uniquement sur javascript, certains utilisateurs qui naviguent sans lui ne pourront pas cliquer sur vos liens.
la source
robots.txt
cela n'aiderait pas car elles seraient toujours stockées dans l'historique du navigateur et les serveurs intermédiaires.Voici un bel article qui montre de nombreuses façons de cacher des fichiers aux moteurs de recherche:
JavaScript n'est pas un bon moyen de ne pas indexer une page; cela n'empêchera pas les utilisateurs de créer un lien direct vers vos fichiers (et donc de les révéler aux robots d'exploration) et, comme Rob l'a mentionné, ne fonctionnerait pas pour tous les utilisateurs.
Une solution simple consiste à ajouter l'
rel="nofollow"
attribut, mais encore une fois, ce n'est pas complet sans robots.txt.la source
Oui, vous devrez changer le window.location.href en l'URL du fichier que vous souhaitez télécharger.
la source
la source
$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');
je l'ai utilisé.Utilisation de la fonction jQuery
la source
En indiquant que
window.location.href = 'uploads/file.doc';
vous montrez où vous stockez vos fichiers. Vous pouvez bien sûr utiliser .htacess pour forcer le comportement requis pour les fichiers stockés, mais cela peut ne pas toujours être une poignée ...Il est préférable de créer un fichier php côté serveur et d'y placer ce contenu:
Ce code renverra TOUT fichier en téléchargement sans montrer où vous le stockez réellement.
Vous ouvrez ce fichier php via
window.location.href = 'scripts/this_php_file.php?f=downloaded_file';
la source
Les iframes cachés peuvent aider
la source
Je vous suggère d'utiliser l'événement mousedown, qui s'appelle AVANT l'événement de clic. De cette façon, le navigateur gère l'événement de clic naturellement, ce qui évite toute bizarrerie du code:
la source
Voir ici pour un article similaire sur l'utilisation de jQuery pour effacer les formulaires: Réinitialiser un formulaire en plusieurs étapes avec jQuery
Vous pouvez également rencontrer un problème où les valeurs sont repeuplées par la pile de valeurs Struts. En d'autres termes, vous soumettez votre formulaire, faites ce que vous voulez dans la classe d'action, mais n'effacez pas les valeurs de champ associées dans la classe d'action. Dans ce scénario, le formulaire semble conserver les valeurs que vous avez soumises précédemment. Si vous les persistez d'une manière ou d'une autre, annulez simplement chaque valeur de champ dans votre classe d'action après avoir persisté et avant de renvoyer SUCCESS.
la source