ホームページ > バックエンド開発 > C++ > ASP.NET で URL からファイルをストリーミングするにはどうすればよいですか?

ASP.NET で URL からファイルをストリーミングするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-06 08:19:40
オリジナル
558 人が閲覧しました

How to Stream Files from URLs in ASP.NET?

ASP.NET での URL からのファイルのダウンロードとストリーミング

ASP.NET では、ブラウザーで保存のプロンプトを表示するファイルをストリーミングできます。 Server.MapPath を使用して実現されます。ただし、ファイルが仮想的にマップされたディレクトリにある場合、この方法は機能しない可能性があります。 HttpWebRequest を使用して URL からファイルをストリーミングする代替ソリューションを次に示します。

//Create a stream for the file
Stream stream = null;

//This controls how many bytes to read at a time and send to the client
int bytesToRead = 10000;

// Buffer to read bytes in chunk size specified above
byte[] buffer = new Byte[bytesToRead];

// The number of bytes read
try
{
  //Create a WebRequest to get the file
  HttpWebRequest fileReq = (HttpWebRequest) HttpWebRequest.Create(url);

  //Create a response for this request
  HttpWebResponse fileResp = (HttpWebResponse) fileReq.GetResponse();

  if (fileReq.ContentLength > 0)
    fileResp.ContentLength = fileReq.ContentLength;

    //Get the Stream returned from the response
    stream = fileResp.GetResponseStream();

    // prepare the response to the client. resp is the client Response
    var resp = HttpContext.Current.Response;

    //Indicate the type of data being sent
    resp.ContentType = MediaTypeNames.Application.Octet;

    //Name the file
    resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
    resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());

    int length;
    do
    {
        // Verify that the client is connected.
        if (resp.IsClientConnected)
        {
            // Read data into the buffer.
            length = stream.Read(buffer, 0, bytesToRead);

            // and write it out to the response's output stream
            resp.OutputStream.Write(buffer, 0, length);

            // Flush the data
            resp.Flush();

            //Clear the buffer
            buffer = new Byte[bytesToRead];
        }
        else
        {
            // cancel the download if client has disconnected
            length = -1;
        }
    } while (length > 0); //Repeat until no data is read
}
finally
{
    if (stream != null)
    {
        //Close the input stream
        stream.Close();
    }
}
ログイン後にコピー

このコードを使用すると、Web サイトの物理的な場所に関係なく、どこにでも配置できるファイルの URL を指定できます。適切なヘッダーを設定し、ファイルを分割してクライアントにストリーミングし、シームレスなダウンロード エクスペリエンスを提供します。

以上がASP.NET で URL からファイルをストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート