13

ユーザーがオンラインで記入するWebフォームがあります。送信を押すと、ファイルのダウンロードが開始されます。

現時点では、フォームの送信を処理し、ユーザーに適したファイルを生成して、適切なヘッダーで起動します。例えば...

header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");

ただし、これによりダウンロードがすぐに開始されるため、元のフォームはブラウザによって画面に残されます。

ダウンロードが完了したら(またはダウンロードが開始する前に)、「ありがとう」画面に移動したいと思います。あなたが訪問するほとんどすべてのダウンロードサイトがこれを行うので、私はそれが可能であることを知っています(通常、ダウンロードが始まる前にあなたを広告でいっぱいにするために)。

では、1秒後にダウンロードを開始する「ありがとう」画面を表示するにはどうすればよいですか?

フォームを再入力せずにファイルを再度ダウンロードしたくないので、提案されたソリューションは戻るボタンの動作にどのように影響しますか?

私はサーバーでPHPを使用しており、クライアントで使用可能なJavascript(およびjQuery)に依存できます。

ありがとうございました。

4

3 に答える 3

24

フォームをサンキュードキュメントに送信し、そこにMETA 更新をファイル ダウンロードに配置することができます。

<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>
于 2009-10-02T12:13:40.720 に答える
3

「ありがとうございます。ダウンロードは数秒で開始されます」という内容の 2 番目のページを追加し、javascript を使用してダウンロードをトリガーします。

$(document).ready(function(){
  window.setTimeout(function(){
    window.location = 'http://yourdownloadhost.com/file.zip';
  }, 1500);
});

またはメタリダイレクトを使用します。

于 2009-10-02T12:14:45.960 に答える
0

非表示の iframe をページに挿入し、フォームをこの iframe に送信できます。

于 2009-10-02T14:07:25.137 に答える