特定のクライアントの画像などのソースを制御するために、download.aspx を実装しようとしています。download.aspx.cs ではバッファリング方式を使用しています。コードを以下に示します。
using (var fs = new FileStream(_path, FileMode.Open, FileAccess.Read))
{
Response.BufferOutput = false; // to prevent buffering
byte[] buffer = new byte[1024];
int bytesRead = 0;
if (_file.Extension == ".pdf")
{
Response.AddHeader("Content-Disposition", "inline; filename=" + _file.Name);
}
else
{
Response.AddHeader("Content-Disposition", "attachment; filename=" + _file.Name);
}
Response.AddHeader("Content-Length", _file.Length.ToString());
Response.ContentType = ReturnExtension(_file.Extension.ToLower());
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, bytesRead);
}
}
単一のファイルをダウンロードするときにうまく機能します。ただし、私たちの状況では、同時に約 20 枚の画像を読み込もうとしています。非常に遅くなります。以下は、キャプチャされた画面です:-
原因がわかりません。これがファイルを制御するための実用的な方法であるか、それを達成するための他のより良い方法があるかを知りたいです。