Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menstrim Fail dari URL dalam ASP.NET?

Bagaimana untuk Menstrim Fail dari URL dalam ASP.NET?

Linda Hamilton
Lepaskan: 2025-01-06 08:19:40
asal
559 orang telah melayarinya

How to Stream Files from URLs in ASP.NET?

Memuat turun dan Menstrim Fail daripada URL dalam ASP.NET

Dalam ASP.NET, menstrim fail yang menggesa menyimpan gesaan dalam penyemak imbas boleh dicapai menggunakan Server.MapPath. Walau bagaimanapun, apabila fail terletak dalam direktori yang hampir dipetakan, kaedah ini mungkin tidak berfungsi. Berikut ialah penyelesaian alternatif menggunakan HttpWebRequest untuk menstrim fail daripada 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();
    }
}
Salin selepas log masuk

Kod ini membolehkan anda menentukan URL untuk fail, yang boleh didapati di mana-mana, tanpa mengira lokasi fizikal tapak web. Ia menyediakan pengepala yang sesuai dan menstrimkan fail kepada klien secara berperingkat-peringkat, memberikan pengalaman muat turun yang lancar.

Atas ialah kandungan terperinci Bagaimana untuk Menstrim 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