Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Muat Turun atau Strim Fail dari URL dalam ASP.NET?

Bagaimana untuk Muat Turun atau Strim Fail dari URL dalam ASP.NET?

Barbara Streisand
Lepaskan: 2025-01-06 08:17:41
asal
533 orang telah melayarinya

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

Muat turun atau Strim Fail daripada URL dalam ASP.NET

Anda mungkin menghadapi senario di mana anda perlu memuat turun atau menstrim fail daripada URL dalam anda aplikasi ASP.NET. Walau bagaimanapun, cabaran timbul apabila fail ini berada dalam direktori yang dipetakan secara maya, menjadikannya mustahil untuk menentukan lokasi sebenar mereka menggunakan Server.MapPath.

Satu penyelesaian untuk ini ialah menggunakan kelas HttpWebRequest untuk mendapatkan semula fail dan menstrimnya kembali kepada klien. Ini membolehkan anda mengakses fail melalui URL dan bukannya laluan fail.

Pertimbangkan coretan kod berikut:

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();
  }
}
Salin selepas log masuk

Dengan melaksanakan pendekatan ini, anda boleh menstrim fail daripada URL dan memaparkannya terus dalam penyemak imbas atau membenarkan pengguna menyimpannya ke sistem setempat mereka.

Atas ialah kandungan terperinci Bagaimana untuk Muat Turun atau Strim Fail dari URL dalam ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan