131 votes

Télécharger le Fichier en Utilisant jQuery

Comment puis-je t invite a télécharger pour une 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 ma HREF et fichiers privés.

Peut-on le faire avec jQuery, si oui, comment? Ou faudrait-il le faire avec PHP ou quelque chose à la place?

187voto

karim79 Points 178055

Je pourrais suggérer comme un plus gracieusement dégradant la solution, en utilisant preventDefault:

$('a').click(function(e) {
    e.preventDefault();  //stop the browser from following
    window.location.href = 'uploads/file.doc';
});

<a href="no-script.html">Download now!</a>

Même si il n'y a pas de Javascript, au moins de cette façon, l'utilisateur va obtenir de la rétroaction.

23voto

Rob Points 1894

Si vous ne voulez pas que les moteurs de recherche d'indexer certains fichiers, vous pouvez utiliser robots.txt dire araignées de ne pas accéder à certaines parties de votre site web.

Si vous comptez uniquement sur le javascript, certains utilisateurs qui naviguent sans qu'il ne sera pas en mesure de cliquer sur vos liens.

17voto

Kobi Points 65357

Voici un bel article qui montre de nombreuses façons de cacher des fichiers à partir de moteurs de recherche:

http://antezeta.com/news/avoid-search-engine-indexing

JavaScript n'est pas une bonne façon de ne pas indexer une page; il n'est pas d'empêcher les utilisateurs de faire des liens directs vers vos fichiers (et donc de révéler aux robots d'indexation), et Rob mentionné, ne fonctionne pas pour tous les utilisateurs.
Une solution facile est d'ajouter de l' rel="nofollow" d'attribut, mais encore une fois, il n'est pas complet sans robots.txt.

<a href="uploads/file.doc" rel="nofollow">Download Here</a>

12voto

MacAnthony Points 2327

Oui, vous aurez à changer la fenêtre.emplacement.href de l'url du fichier que vous souhaitez télécharger.

window.location.href = 'http://www.com/path/to/file';

7voto

En déclarant window.location.href = 'uploads/file.doc'; vous montrer où vous stockez vos fichiers. Vous pouvez bien sûr utiliser .htacess pour forcer le comportement requis pour stocker les fichiers, mais cela peut ne pas toujours être la poignée....

Il est préférable de créer un serveur php côté-fichier et de le placer ce contenu:

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$_REQUEST['f']);
readfile('../some_folder/some_subfolder/'.$_REQUEST['f']); 
exit;

Ce code de retour de n'IMPORTE quel fichier en téléchargement, sans montrer l'emplacement où vous stockez.

Vous ouvrez ce fichier php via window.location.href = 'scripts/this_php_file.php?f=downloaded_file';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X