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

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

Barbara Streisand
リリース: 2025-01-06 08:17:41
オリジナル
532 人が閲覧しました

How to Download or Stream Files from URLs in ASP.NET?

ASP.NET の URL からファイルをダウンロードまたはストリーミングする

ASP.NET の URL からファイルをダウンロードまたはストリーミングする必要があるシナリオが発生する場合があります。 ASP.NET アプリケーション。ただし、これらのファイルが仮想的にマップされたディレクトリに存在する場合に問題が発生し、Server.MapPath を使用してファイルの実際の場所を特定することができなくなります。

これに対する 1 つの解決策は、HttpWebRequest クラスを使用してファイルを取得し、ストリーミングすることです。クライアントに戻ります。これにより、ファイル パスの代わりに URL を介してファイルにアクセスできるようになります。

次のコード スニペットを検討してください:

try
{
  // Create a WebRequest to retrieve the file
  HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);

  // Get a response for the request
  HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
  if (fileReq.ContentLength > 0)
    fileResp.ContentLength = fileReq.ContentLength;

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

  // Prepare the response to the client
  HttpContext.Current.Response.ContentType = MediaTypeNames.Application.Octet;
  HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
  HttpContext.Current.Response.AddHeader("Content-Length", fileResp.ContentLength.ToString());

  int length;
  byte[] buffer = new byte[10000]; // Chunk size for reading the file
  do
  {
    // Check if the client is connected
    if (HttpContext.Current.Response.IsClientConnected)
    {
      // Read data into the buffer
      length = stream.Read(buffer, 0, buffer.Length);

      // Write it out to the response's output stream
      HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);

      // Flush the data
      HttpContext.Current.Response.Flush();

      // Clear the buffer
      buffer = new byte[buffer.Length];
    }
    else
    {
      // Cancel the download if the client has disconnected
      length = -1;
    }
  } while (length > 0);
}
catch
{
  // Handle any errors that may occur
}
finally
{
  if (stream != null)
  {
    // Close the input stream
    stream.Close();
  }
}
ログイン後にコピー

このアプローチを実装すると、URL からファイルをストリーミングし、ファイルを直接表示できます。ブラウザに保存するか、ユーザーがローカル システムに保存できるようにします。

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

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