1

codeprojectでこの記事を読みましたが、asp.net mvc3http ://www.codeproject.com/Articles/18243/Bandwidth-throttlingに適用する方法がわかりません。

これが私のプロジェクトでファイルをダウンロードするためのコードです

public ActionResult GetFile(int id)
{
    var f = FileAcc.GetInfo(id);
    var templateStr = new FileStream(Server.MapPath(f.file_url), FileMode.Open);
    return File(templateStr, f.file_name);
}

Plzはこの問題について私をサポートしてくれて、どうもありがとう!

4

1 に答える 1

4

プロジェクトに含めThrottledStream.csて、GetFileメソッドを次のように置き換えるだけです-

public ActionResult GetFile(int id) {
    var f = FileAcc.GetInfo(id);
        int bufferSize = 1024, bps = 1024;
        using (FileStream sourceStream = new FileStream(Server.MapPath(f.file_url), FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize)) {
            using (Born2Code.Net.ThrottledStream destinationStream = new Born2Code.Net.ThrottledStream(Response.OutputStream, bps)) {
                byte[] buffer = new byte[bufferSize];
                int readCount = sourceStream.Read(buffer, 0, bufferSize);
                Response.Buffer = false;
                while (readCount > 0) {
                    destinationStream.Write(buffer, 0, readCount);
                    readCount = sourceStream.Read(buffer, 0, bufferSize);
                }
            }
        }
    return new EmptyResult();
}

必要に応じてbpsを微調整します。

于 2012-10-30T15:09:02.403 に答える