Estou fornecendo o link de um arquivo pdf na minha página da web para download, como abaixo
<a href="myfile.pdf">Download Brochure</a>
O problema é quando o usuário clica neste link e, em seguida,
- Se o usuário instalou o Adobe Acrobat, ele abrirá o arquivo na mesma janela do navegador no Adobe Reader.
- Se o Adobe Acrobat não estiver instalado, ele será exibido para o usuário em Download do arquivo.
Mas eu quero que ele sempre apareça para o usuário fazer o download, independentemente do "Adobe acrobat" estar instalado ou não.
Por favor me diga como eu posso fazer isso?
"Content-type: application/force-download"
não está listado em nenhum lugar aqui: iana.org/assignments/media-types/application É um cabeçalho completamente falso. Por favor, não crie cabeçalhos e envie-os. Você pode atualizar sua resposta. Obrigado.fopen
.Esse é um problema comum, mas poucas pessoas sabem que existe uma solução simples em HTML 5:
Onde
newfilename
está o nome do arquivo sugerido para o usuário salvar o arquivo. Ou o padrão será o nome do arquivo no lado do servidor, se você o deixar vazio, assim:Compatibilidade: testei isso no Firefox 21 e no Iron, ambos funcionaram bem. Pode não funcionar em navegadores incompatíveis com HTML5 ou desatualizados. O único navegador que testei que não forçou o download é o IE ...
Verifique a compatibilidade aqui: http://caniuse.com/#feat=download
fonte
Não percorra todas as linhas de arquivo. Use readfile , é mais rápido. Isto está fora do site php: http://php.net/manual/en/function.readfile.php
Certifique-se de higienizar sua variável get, pois alguém pode baixar alguns arquivos php ...
fonte
Em vez de usar um script PHP, para ler e liberar o arquivo, é mais interessante reescrever o cabeçalho usando
.htaccess
. Isso manterá um URL "legal" (emmyfile.pdf
vez dedownload.php?myfile
).fonte
^\.pdf$
expressão regular.Encontrei uma maneira de fazê-lo com HTML e JavaScript / jQuery simples e antigo que degrada normalmente. Testado no IE7-10, Safari, Chrome e FF:
HTML para link de download:
jQuery (código JavaScript puro seria mais detalhado) que simula o clique no link após um pequeno atraso:
Para tornar isso mais robusto, você pode adicionar a detecção de recurso HTML5 e, se não estiver lá, use
window.open()
para abrir uma nova janela com o arquivo.fonte
Esta é a chave:
O aplicativo do tipo de conteúdo / x-pdf-document ou application / pdf é enviado durante o envio do arquivo PDF. O Adobe Reader geralmente define o manipulador para esse tipo de MIME, para que o navegador passe o documento para o Adobe Reader quando qualquer um dos tipos de PDF MIME for recebido.
fonte
Eu sei que estou muito atrasado para responder a isso, mas encontrei um truque para fazer isso em javascript.
fonte
Tente o seguinte:
<a href="pdf_server_with_path.php?file=pdffilename&path=http://myurl.com/mypath/">Download my eBook</a>
O código dentro do pdf_server_with_path.php é:
fonte
Aqui está uma abordagem diferente. Prefiro confiar no suporte ao navegador ou abordá-lo na camada de aplicativos para usar a lógica do servidor da web.
Se você estiver usando o Apache e puder colocar um arquivo .htaccess no diretório relevante, poderá usar o código abaixo. Obviamente, você também pode colocar isso no httpd.conf, se tiver acesso a isso.
A diretiva FilesMatch é apenas uma regex; portanto, ela pode ser definida da forma mais granular que você desejar, ou você pode adicionar outras extensões.
A linha Header faz a mesma coisa que a primeira linha nos scripts PHP acima. Se você precisar definir as linhas do tipo de conteúdo também, poderá fazê-lo da mesma maneira, mas não achei necessário.
fonte
Resolvi o meu usando todo o URL do arquivo PDF (em vez de apenas colocar o nome ou o local do arquivo em href): a href = "domain. Com / pdf / filename.pdf"
fonte
se você precisar limitar a taxa de download, use este código !!
Para mais informações clique aqui
fonte
fonte
Em um aplicativo Ruby on Rails (especialmente com algo como a gema Prawn e o plug-in Prawnto Rails), você pode fazer isso um pouco mais do que um script completo (como no exemplo anterior do PHP).
No seu controlador:
A parte render: layout => false indica ao navegador para abrir a seção "Deseja baixar este arquivo?" em vez de tentar renderizar o PDF. Em seguida, você poderá vincular o arquivo normalmente: http://mysite.com/myawesomepdf.pdf
fonte