Isso é loucura, mas não sei como fazer isso, e por causa de quão comuns são as palavras, é difícil encontrar o que eu preciso nos mecanismos de busca. Estou pensando que isso deve ser fácil de responder.
Eu quero um download de arquivo simples, que faria o mesmo que este:
<a href="file.doc">Download!</a>
Mas eu quero usar um botão HTML, por exemplo, um destes:
<input type="button" value="Download!">
<button>Download!</button>
Da mesma forma, é possível acionar um simples download via JavaScript?
$("#fileRequest").click(function(){ /* code to download? */ });
Definitivamente, não estou procurando uma maneira de criar uma âncora parecida com um botão, usar scripts de back-end ou mexer nos cabeçalhos do servidor ou nos tipos MIME.
javascript
html
download
brentonstrina
fonte
fonte
Respostas:
Para o botão você pode fazer
fonte
Você pode acionar um download com o
download
atributo HTML5 .Onde:
path_to_file
é um caminho que resolve para um URL na mesma origem . Isso significa que a página e o arquivo devem compartilhar o mesmo domínio, subdomínio, protocolo (HTTP vs. HTTPS) e porta (se especificado). As exceções sãoblob:
edata:
(que sempre funcionam) efile:
(que nunca funcionam).proposed_file_name
é o nome do arquivo no qual salvar. Se estiver em branco, o navegador usará como padrão o nome do arquivo.Documentação: MDN , HTML Standard no download , HTML Standard no
download
, CanIUsefonte
download
etarget="_blank"
parece ser suficiente para cobrir a maioria dos casos de uso. Os navegadores que entendem odownload
tratam como um download, caso contrário, ele é aberto em uma nova guia.HTML:
fonte
Com jQuery:
fonte
Tópico antigo, mas está faltando uma solução js simples:
fonte
Você pode fazer isso com "truque" com iframe invisível. Quando você define "src", o navegador reage como se você clicasse em um link com o mesmo "href". Ao contrário da solução com forma, ele permite incorporar lógica adicional, por exemplo, ativar o download após o tempo limite, quando algumas condições são atendidas etc.
Também é muito silencioso, não há novas janelas / abas piscando como no uso
window.open
.HTML:
Javascript:
fonte
Versão do Bootstrap
Documentado nos documentos do Bootstrap 4 e funciona também no Bootstrap 3.
fonte
Eu acho que essa é a solução que você estava procurando
Eu tive um caso em que meu Javascript gerou um arquivo CSV. Como não há URL remota para fazer o download, uso a seguinte implementação.
fonte
location.href
soluções.A respeito:
fonte
Você pode ocultar o link de download e clicar no botão.
fonte
Se você está procurando uma solução de baunilha JavaScript (sem jQuery) e sem usar o atributo HTML5, pode tentar isso.
fonte
Foi o que finalmente funcionou para mim, uma vez que o arquivo a ser baixado foi determinado quando a página é carregada.
JS para atualizar o atributo de ação do formulário:
Chamando JS para atualizar o atributo de ação do formulário:
Etiqueta de formulário com o botão enviar:
O seguinte NÃO funcionou:
fonte
Se você não pode usar o formulário, outra abordagem com o downloadjs é adequada. O Downloadjs usa a API de arquivos blob e html 5 sob o capô:
{downloadjs (url, nome do arquivo)}) />
* é sintaxe jsx / react, mas pode ser usado em html puro
fonte
Em qualquer lugar entre as tags
<body>
e e</body>
, coloque um botão usando o código abaixo:Isso com certeza funcionará!
fonte
Outra maneira de fazer, caso você tenha um URL complexo, como
file.doc?foo=bar&jon=doe
adicionar campo oculto ao formulárioinspirado na resposta @Cfreak que não está completa
fonte
você pode adicionar tags sem nenhum texto, mas com o link. e quando você clicar no botão como no código, basta executar a função $ ("yourlinkclass"). click ().
fonte
atributo de download faça
fonte
Se você usar a
<a>
tag, não se esqueça de usar o URL inteiro que leva ao arquivo - ou seja:fonte
Para mim, adicionar um botão ao invés de um texto âncora funciona muito bem.
Pode não ser bom para a maioria das regras, mas parece muito bom.
fonte
<a>
elementos não podem conter<button>
elementos.