Auto download do arquivo início após o envio do formulário
-
19-09-2019 - |
Pergunta
Eu tenho um formulário web que os usuários completar online. Quando pressionar submeter ele vai começar um download de arquivo para eles.
No momento, eu processar o envio do formulário e gerar um arquivo adequado para o usuário e fogo-lo fora com cabeçalhos apropriados. por exemplo ...
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");
No entanto, uma vez que este inicia um download imediato, a forma original é deixado na tela pelo navegador.
Eu realmente gostaria de ir para algum "Obrigado" tela uma vez que os concluída de download (ou antes de iniciar o download). Eu sei que é possível, porque quase todos os sites de download que você visita faz isso (normalmente para bombear você cheio de anúncios antes de iniciar o download).
Assim, Como posso mostrar um "Thank You" tela que inicia o download após um segundo?
Como qualquer solução teria proposto efeito o comportamento do botão voltar, como eu não deseja que o arquivo de baixar novamente sem o formulário que está sendo recarregado?
Eu estou usando PHP no servidor e pode contar com Javascript (e jQuery) estar disponível no cliente.
Obrigado.
Solução
Você pode enviar o formulário para o Obrigado documento e colocar lá um Meta Refresh para o download do arquivo:
<meta http-equiv="refresh" content="3;url=download.php">
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p>
Outras dicas
Adicionar uma segunda página que diz algo "obrigado, seu download começará em poucos segundos" e desencadeia o download usando javascript:
$(document).ready(function(){
window.setTimeout(function(){
window.location = 'http://yourdownloadhost.com/file.zip';
}, 1500);
});
ou usar um redirecionamento meta.
Você pode inserir um iframe escondido em sua página e enviar o seu formulário para este iframe.