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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top