0

アプリケーションの構成とインストールを通じてユーザーをガイドする Web アプリケーションを構築しています。構成ファイルのセットを動的に構築し、アプリケーションのインストーラーと共にアーカイブ (.ZIP ファイル) で送信します。Web ページは Linux シェル スクリプトから生成されます (申し訳ありません)。セキュリティ上の理由から、ファイルはリンクとしてではなく、スクリプトから直接送信することをお勧めします。そのため、ユーザーは直接アクセスできません。

プロセスは次のとおりです。ユーザーがいくつかの情報を入力し、ファイルが生成されたら、指示のあるページを表示し、ユーザーに「このファイルをダウンロードする」リンクをクリックするように求めることなく、自動的にダウンロードを開始します。

#!/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.

ご協力いただきありがとうございます!

4

3 に答える 3

3

あなたは本当にそれができないと思います。
次のヘッダーを使用してファイルを強制的にダウンロードできますが、私が知る限り、HTML とファイルのダウンロードを混在させることはできません。

ヘッダー:

コンテンツタイプ: MIME/タイプ
Content-Disposition: 添付; ファイル名="アーカイブ.zip"
コンテンツの長さ: filesize_in_bytes

コンテンツの長さは必須ではありませんが、これを使用すると、ダウンロード ダイアログ ボックスにダウンロードするファイルがどれだけ残っているかが表示されます。

できることは、JavaScript を使用してページをリロードすることです。このページはファイルのダウンロードであるため、元の HTML ページはそのまま残ります。

<html>
<頭>
<title>これは情報を含むページです</title>
<script type="text/javascript">
window.onload = function(){
 document.location = 'somefile.zip';
}
</script>
</head>
<本体>
このページは、ファイルのダウンロード中も表示されたままになります<br>
</body>
</html>
于 2008-12-07T17:46:14.827 に答える
1

メタタグを使用して更新を行うことで、ブラウザーにファイルのダウンロードをユーザーに促すことができると思いますが、Pim Jager が言ったように、1 回の転送でそれを行うことはできないと思います。次のようなことを試してみてください:

<meta http-equiv="refresh" content="5;url=http://example.com/pathtodownload.zip" />
于 2008-12-07T18:53:44.877 に答える
0

友人が魔法を提供してくれました。<iframe>タグを使用して、ダウンロードするファイルのみを含む「見えない」フレームを作成します。

<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>`
于 2008-12-07T18:54:25.937 に答える