transferência automática de arquivos de HTML
-
20-08-2019 - |
Pergunta
Estou construindo uma aplicação web que guia os meus utilizadores através da configuração e instalação de um aplicativo. Ele constrói um conjunto de arquivos de configuração dinamicamente, em seguida, envia-los em um (arquivo .ZIP) arquivo junto com um instalador para a aplicação. A página web é gerado a partir de um script shell linux (sorry), e por razões de segurança, eu prefiro o arquivo ser enviado diretamente do roteiro, e não como um link, para que o usuário não pode acessá-lo diretamente.
Aqui está o processo: Uma vez que o usuário inseriu algumas informações, e os arquivos foram gerados, eu quero exibir uma página com instruções, em seguida, iniciar o download automaticamente, sem pedir o usuário a clicar em um link "download deste arquivo" :
#!/bin/bash
echo_header_and_instructions # Standard HTML
<Magic HTML tag to start transfer> # ??? What goes here???
command_to_stream_the_files # Probably 'cat'
echo_end_tags # End the page.
Obrigado por sua ajuda!
Solução 3
Um amigo fornecido a mágica: usar um tag <iframe>
para criar um quadro "invisível" que contém apenas o arquivo para download:
<iframe id="file_download" width="0" height="0" scrolling="no"
frameborder="0" src=/cgi-bin/my/scripts/sendfiles?file=$filename.zip>
You need a browser that supports frames.
</iframe>`
Outras dicas
Você não pode realmente fazer isso, acho.
Você pode forçar o download do arquivo através dos seguintes cabeçalhos mas, tanto é que eu sei que você não pode misturar HTML e download do arquivo.
cabeçalhos:
Content-type: MIME/type Content-Disposition: attachment; filename="archive.zip" Content-Length: filesize_in_bytes
O comprimento de conteúdo não é obrigatório, mas usá-lo irá certificar-se de que a caixa de diálogo de download pode mostrar quanto mais arquivos que há para download.
Uma coisa que você poderia fazer é recarregar a página usando javascript. Como a página é um download de arquivo na página HTML original vai ficar no lugar:
<html> <head> <title>This is the page containing information</title> <script type="text/javascript"> window.onload = function(){ document.location = 'somefile.zip'; } </script> </head> <body> This page will stay visible while the file is being downloaded<br> </body> </html>
Eu acho que você pode fazer o navegador solicitará que o usuário baixar um arquivo usando o href="http://en.wikipedia.org/wiki/Meta_refresh" rel="nofollow noreferrer"> meta tag fazer uma atualização, mas como disse Pim Jager Eu não acho que você pode fazê-lo com uma transferência. Você poderia talvez tentar fazer algo como:
<meta http-equiv="refresh" content="5;url=http://example.com/pathtodownload.zip" />