Tenho alguns catálogos PDF de tamanho grande no meu site e preciso vinculá-los como download. Quando pesquisei no Google, encontrei uma coisa mencionada abaixo. Ele deve abrir o pop-up " Salvar como ... " no link, clique em ...
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
Mas não funciona: / Quando vinculo a um arquivo como abaixo, ele apenas vincula a um arquivo e está tentando abrir o arquivo.
<a href="filename.pdf" title="Filie Name">File name</a>
ATUALIZAÇÃO (de acordo com as respostas abaixo):
Pelo que vejo, não existe uma solução 100% confiável entre navegadores para isso. Provavelmente, a melhor maneira é usar um dos serviços da web listados abaixo e fornecer um link para download ...
Respostas:
De uma resposta para Forçar um navegador a salvar o arquivo como após clicar no link :
fonte
download
atributo está limitado ao Chrome, Firefox e Opera. Mesmo versões recentes do IE e Safari não são compatíveis. Para suporte futuro: consulte caniuse.com/#feat=download !Funciona para mim no Firefox e Chrome.
fonte
target="_blank"
isso pode torná-lo um pouco mais utilizável para navegadores sem suporte (os PDFs são abertos em uma nova janela / guia, em vez de sobrescrever a página atual).target="_blank"
era necessário quedownload
só não conseguiu acionar o download corretamente (Chrome)download
atributo, ela será usada como nome do arquivo. Estou usando-o em scripts de usuário o tempo todo.As meta tags não são uma maneira confiável de obter esse resultado. Geralmente, você nem deve fazer isso - deve ficar ao usuário / agente de usuário decidir o que fazer com o conteúdo que você fornece. O usuário sempre pode forçar o navegador a baixar o arquivo, se desejar.
Se você ainda deseja forçar o navegador a baixar o arquivo, modifique os cabeçalhos HTTP diretamente. Aqui está um exemplo de código PHP:
Observe que isso é apenas uma extensão do protocolo HTTP; alguns navegadores podem ignorá-lo de qualquer maneira.
fonte
ob_end_flush()
também não ajudou.Eu tive esse mesmo problema e encontrei uma solução que funcionou muito bem até agora. Você coloca o seguinte código no seu
.htaccess
arquivo:Ele veio de Forçar o download de um arquivo em vez de aparecer no navegador .
fonte
<FilesMatch "\.(pdf|xlsx?|docx?)$">
Eu encontrei uma solução muito simples para o Firefox (funciona apenas com um href relativo e não direto): add
type="application/octet-stream"
:fonte
Tente adicionar esta linha ao seu arquivo .htaccess.
Espero que funcione, pois é independente do navegador.
fonte
Geralmente isso acontece, porque algumas configurações ou plug-ins de navegadores abrem PDF diretamente na mesma janela como uma simples página da web.
O seguinte pode ajudá-lo. Eu fiz isso em PHP há alguns anos atrás. Mas atualmente não estou trabalhando nessa plataforma.
Salve o acima como download.php .
Salve esse pequeno trecho como um arquivo PHP em algum lugar do seu servidor e você pode usá-lo para fazer o download de um arquivo no navegador, em vez de exibir diretamente. Se você deseja exibir outros arquivos que não PDF, remova ou edite a linha 5.
Você pode usá-lo assim:
Adicione o seguinte link ao seu arquivo HTML.
Referência de: Este blog
fonte
download.php?file=database_password_file.php
por exemplo.Basta colocar o código abaixo no seu
.htaccess
arquivo:Ou você também pode fazer truques por JavaScript
fonte
Acabei de usar isso, mas não sei se funciona em todos os navegadores.
Funciona no Firefox:
fonte
Um realmente maneira simples de conseguir isso, sem usar sites de download externos ou modificar cabeçalhos, etc. é simplesmente criar um arquivo ZIP com o PDF dentro e vincular diretamente ao arquivo ZIP. Isso sempre acionará a caixa de diálogo Salvar / Abrir, e ainda é fácil para as pessoas clicar duas vezes nas janelas PDF em que o programa associado ao .zip é iniciado.
BTW ótima pergunta, eu estava procurando uma resposta também, uma vez que a maioria dos plug-ins PDF incorporados ao navegador leva muito tempo para exibir qualquer coisa (e geralmente travam o navegador enquanto o PDF está sendo carregado).
fonte
Uma solução do lado do servidor é mais compatível, até que o atributo "download" seja implementado em todos os navegadores.
Um exemplo de Python pode ser um manipulador de solicitação HTTP personalizado para um armazenamento de arquivos. Os links que apontam para o armazenamento de arquivos são gerados assim:
Aqui está o código:
fonte
Uma maneira muito fácil de fazer isso, se você precisar forçar o download de um único link em sua página, é usar o atributo de download HTML5 no link href.
Consulte: http://davidwalsh.name/download-attribute
com isso, você pode renomear o arquivo que o usuário fará o download e, ao mesmo tempo, força o download.
Houve um debate sobre se isso é uma boa prática ou não, mas no meu caso eu tenho um visualizador incorporado para um arquivo PDF e o visualizador não oferece um link para download, por isso preciso fornecer um separadamente. Aqui, quero garantir que o usuário não abra o PDF no navegador da Web, o que seria confuso.
Isso não é necessário, abra a caixa de diálogo Salvar como, mas baixe o link diretamente para o destino de download predefinido. E, é claro, se você estiver criando um site para outra pessoa e precisar que ela escreva atributos manualmente em seus links, provavelmente é uma má idéia, mas se houver uma maneira de inserir o atributo nos links, isso pode ser uma solução leve.
fonte
Este é um post antigo, mas aqui está a minha solução em JavaScript, que usa a biblioteca jQuery.
Você só precisa usar a classe
force-download
dentro da sua<a>
tag e forçará o download automaticamente. Você também pode adicioná-lo ao paidiv
e selecionará todos os links dentro dele.Exemplo:
Isso é ótimo para o WordPress e outros sistemas ou sites personalizados.
fonte
Após o nome do arquivo no código HTML, adiciono
?forcedownload=1
Essa foi a maneira mais simples de acionar uma caixa de diálogo para salvar ou baixar.
fonte
Se você possui um plugin no navegador que sabe como abrir um arquivo PDF, ele será aberto diretamente. Como no caso de imagens e conteúdo HTML.
Portanto, a abordagem alternativa não é enviar seu tipo MIME na resposta. Dessa maneira, o navegador nunca saberá qual plugin deve abri-lo. Portanto, ele fornecerá uma caixa de diálogo Salvar / Abrir .
fonte
Eu apenas tive um problema muito semelhante com o problema adicional necessário para criar links de download para arquivos dentro de um arquivo ZIP.
Tentei primeiro criar um arquivo temporário e, em seguida, forneci um link para o arquivo temporário, mas descobri que alguns navegadores apenas exibiam o conteúdo (um arquivo CSV Excel) em vez de oferecer o download. Eventualmente, encontrei a solução usando um servlet. Ele funciona no Tomcat e no GlassFish, e eu tentei no Internet Explorer 10 e Chrome.
O servlet usa como entrada um nome de caminho completo para o arquivo ZIP e o nome do arquivo dentro do zip que deve ser baixado.
Dentro do meu arquivo JSP, tenho uma tabela exibindo todos os arquivos dentro do zip, com links que dizem:
onclick='download?zip=<%=zip%>&csv=<%=csv%>'
O código do servlet está em download.java:
Para compilar no Tomcat, você precisa do caminho de classe para incluir tomcat \ lib \ servlet-api.jar ou no GlassFish: glassfish \ lib \ j2ee.jar
Mas qualquer um deles trabalhará em ambos. Você também precisa definir seu servlet
web.xml
.fonte
Adicione um cabeçalho de resposta Content-Disposition: attachment; seguido pelo nome do arquivo. Remova o Meta Content-Disposition; Inline; que abrirá o documento na mesma janela
Em java, é definido como
fonte
Com arquivos PDF grandes, o navegador trava. No Mozilla, menu Ferramentas → Opções → Aplicativos e depois ao lado do tipo de conteúdo do documento Adobe Acrobat. Na lista suspensa Ação, selecione Sempre perguntar .
Isso não funcionou para mim, então o que funcionou foi:
Ferramentas de menu * → Complementos → Adobe Acrobat (plugin Adobe PDF para Firefox) → DESATIVAR. Agora eu posso baixar e-books!
fonte