Como posso solicitar um download para um usuário quando ele clica em um link.
Por exemplo, em vez de:
<a href="uploads/file.doc">Download Here</a>
Eu poderia usar:
<a href="#">Download Here</a>
$('a').click... //Some jquery to download the file
Dessa forma, o Google não indexa meus HREFs e arquivos privados.
Isso pode ser feito com jQuery, se sim, como? Ou isso deve ser feito com PHP ou algo assim?
Respostas:
Eu poderia sugerir isso, como uma solução degradante mais elegante, usando
preventDefault
:Mesmo que não haja Javascript, pelo menos assim o usuário receberá algum feedback.
fonte
Se você não quiser que os mecanismos de pesquisa indexem certos arquivos, use o robots.txt para dizer aos web spiders que não acessem certas partes do seu site.
Se você depender apenas do javascript, alguns usuários que navegam sem ele não conseguirão clicar em seus links.
fonte
robots.txt
não ajudaria porque eles ainda estariam armazenados no histórico do navegador e nos servidores intermediários.Aqui está um bom artigo que mostra muitas maneiras de ocultar arquivos dos mecanismos de pesquisa:
JavaScript não é uma boa maneira de não indexar uma página; isso não impedirá que os usuários se vinculem diretamente aos seus arquivos (e assim revelando-os aos rastreadores) e, como Rob mencionou, não funcionaria para todos os usuários.
Uma solução fácil é adicionar o
rel="nofollow"
atributo, embora, novamente, ele não esteja completo sem o robots.txt.fonte
Sim, você teria que alterar o window.location.href para o url do arquivo que deseja baixar.
fonte
fonte
$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');
eu usei isso.Usando a função jQuery
fonte
Ao declarar,
window.location.href = 'uploads/file.doc';
você mostra onde armazena seus arquivos. É claro que você pode usar .htacess para forçar o comportamento necessário para arquivos armazenados, mas isso nem sempre pode ser difícil ....É melhor criar um arquivo php do lado do servidor e colocar este conteúdo nele:
Este código retornará QUALQUER arquivo como um download sem mostrar onde você realmente o armazenou.
Você abre este arquivo php via
window.location.href = 'scripts/this_php_file.php?f=downloaded_file';
fonte
Iframes ocultos podem ajudar
fonte
Eu sugiro que você use o evento mousedown, que é chamado ANTES do evento de clique. Dessa forma, o navegador lida com o evento de clique naturalmente, o que evita qualquer estranheza do código:
fonte
Veja aqui uma postagem semelhante sobre como usar jQuery para limpar formulários: Redefinindo um formulário de vários estágios com jQuery
Você também pode estar tendo um problema em que os valores estão sendo preenchidos pela pilha de valores do struts. Em outras palavras, você envia seu formulário, faz tudo na classe de ação, mas não limpa os valores dos campos relacionados na classe de ação. Nesse cenário, o formulário parece manter os valores que você enviou anteriormente. Se você estiver persistindo de alguma forma, apenas anule cada valor de campo em sua classe de ação após persistir e antes de retornar SUCCESS.
fonte