首頁 > 後端開發 > 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 確定它們的實際位置。

對此的解決方案是使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板