¿Cómo puedo solicitar una descarga para un usuario cuando hace clic en un enlace?
Por ejemplo, en lugar de:
<a href="uploads/file.doc">Download Here</a>
Podría usar:
<a href="#">Download Here</a>
$('a').click... //Some jquery to download the file
De esta manera, Google no indexa mis archivos HREF y privados.
¿Se puede hacer esto con jQuery? Si es así, ¿cómo? ¿O debería hacerse con PHP o algo así?
Respuestas:
Podría sugerir esto, como una solución más degradante, usando
preventDefault
:Incluso si no hay Javascript, al menos de esta manera el usuario obtendrá algunos comentarios.
fuente
Si no desea que los motores de búsqueda indexen ciertos archivos, puede usar robots.txt para decirles a las arañas web que no accedan a ciertas partes de su sitio web.
Si confía solo en javascript, algunos usuarios que navegan sin él no podrán hacer clic en sus enlaces.
fuente
robots.txt
no ayudaría porque aún se almacenarían en el historial del navegador y en los servidores intermediarios.Aquí hay un buen artículo que muestra muchas formas de ocultar archivos de los motores de búsqueda:
JavaScript no es una buena forma de no indexar una página; no evitará que los usuarios se vinculen directamente a sus archivos (y así lo revelen a los rastreadores) y, como dijo Rob, no funcionaría para todos los usuarios.
Una solución fácil es agregar el
rel="nofollow"
atributo, aunque nuevamente, no está completo sin robots.txt.fuente
Sí, tendría que cambiar window.location.href por la URL del archivo que desea descargar.
fuente
fuente
$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');
Yo usé eso.Usando la función jQuery
fuente
Al indicar
window.location.href = 'uploads/file.doc';
que muestra dónde almacena sus archivos. Por supuesto, puede usar .htacess para forzar el comportamiento requerido para los archivos almacenados, pero esto no siempre puede ser complicado ...Es mejor crear un archivo php del lado del servidor y colocar este contenido en él:
Este código devolverá CUALQUIER archivo como descarga sin mostrar dónde lo almacena.
Abre este archivo php a través de
window.location.href = 'scripts/this_php_file.php?f=downloaded_file';
fuente
Los iframes ocultos pueden ayudar
fuente
Le sugiero que use el evento mousedown, que se llama ANTES del evento de clic. De esa manera, el navegador maneja el evento de clic de forma natural, lo que evita cualquier rareza del código:
fuente
Consulte aquí una publicación similar sobre el uso de jQuery para borrar formularios: Restablecimiento de un formulario de varias etapas con jQuery
También puede encontrarse con un problema en el que los valores se repoblan mediante la pila de valores de struts. En otras palabras, envía su formulario, hace lo que sea en la clase de acción, pero no borra los valores de campo relacionados en la clase de acción. En este escenario, el formulario parecería mantener los valores que envió anteriormente. Si los persiste de alguna manera, simplemente anule cada valor de campo en su clase de acción después de persistir y antes de devolver SUCCESS.
fuente