0

すべて、私はAsp.net MVC 4 Webサイトから大きなblobファイル(約200MB)をダウンロードする方法を見つけようとしています。これが私のコードスニペットです。確認してください。ありがとうございます。

string sBlobName ="xxxxx";
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + sBlobName);

long lFileSize =200*1024*1024;
int iOffset = 0;
int iBufferSize = 4 * 1024 * 1024;//MB

while (iOffset < lFileSize)
{
    //Chunk read blob into a byte array
    var bData = StorageHelper.ChunkReadPackage(sContainerName, sPackFullPath, iOffset, iBufferSize);
    Response.BinaryWrite(bData);
    iOffset += bData.Length;
}
Response.Flush();
Response.End();

return new EmptyResult();

blobから読み取られたすべてのチャンクがResponse.BinaryWrite()によってクライアントに送信された後、Firefoxがダウンロードダイアログウィンドウをポップアップする可能性があります。

私の質問

コンテンツ全体にResponse.BinaryWrite()が必要なのはなぜですか?このプロセスをより効率的にする方法はありますか?つまり、blobの最初のチャンクがクライアントに送信された後、クライアント側でストリームをダウンロードする方法があるかどうかを意味します。代わりに、すべてのコンテンツがクライアントに送信されるのを待ちます。

4

1 に答える 1

1

Response.BufferOutput = false; できます。

于 2012-11-01T03:52:06.867 に答える