プロジェクトの開発中 (ファイルはデータベースに保存されます)、ダウンロードされたファイルは http ヘッダーの形式で書き込まれていることがわかりました。以下のように Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(バイトストリーム);
Response.End();
ただし、プロジェクトがデプロイされた後、ユーザーが IE6.0 で参照すると、プロジェクトはインターセプトされて閉じられ、終了します。当時、同僚はポップアップ フォームを使用し、そのポップアップ フォームで「クリックしてダウンロード」することで、傍受されないようにしていたのです。
私はより直接的な解決策を試しました。これは、クリック時に最初に一時ファイルを生成し、次にその一時ファイルにリンクします。つまり、ファイルのダウンロードまたはファイルを開くダイアログボックスがポップアップします。コードは非常に単純です:
string fileName = "ファイル名" //ファイル ID を使用します。
文字列 tempFilePath = Request.PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + ファイル名;
FileAccess.ReadWrite
);
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"]; //変換
file.Write(docBody, 0, docBody.Length);
file.Close();
Response.Redirect("temp\" + ファイル名);
}
キャッチ
{
file.Close();
}