Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Muat Turun dan Strim Fail dari URL Jauh di ASP.NET?

Bagaimana untuk Muat Turun dan Strim Fail dari URL Jauh di ASP.NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-06 08:26:43800semak imbas

How to Download and Stream Files from a Remote URL in ASP.NET?

Muat turun/Strim fail daripada URL - asp.net

Dalam senario tertentu, anda mungkin perlu menstrim atau memuat turun fail daripada URL jauh dan mencetuskan " Simpan Sebagai" gesaan dalam penyemak imbas. Walau bagaimanapun, apabila fail terletak dalam direktori yang hampir dipetakan, mengakses lokasi sebenar menggunakan Server.MapPath boleh menjadi mencabar.

Sebaliknya, anda boleh memanfaatkan kuasa HttpWebRequest untuk mencapai fungsi ini. Berikut ialah contoh yang membolehkan anda menghantar URL web:

using System.IO;
using System.Net;

namespace FileDownloader
{
    public static class FileDownloader
    {
        public static void DownloadFile(string url, string fileName)
        {
            // Create a stream for the file
            Stream stream = null;

            // Configure streaming chunk size
            int bytesToRead = 10000;

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

            // Initialize response
            HttpWebResponse fileResp = null;

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

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

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

                // Prepare the response to the client
                HttpResponse resp = HttpContext.Current.Response;

                // Set response type and add headers
                resp.ContentType = MediaTypeNames.Application.Octet;
                resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
                resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());

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

                        // Write data 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 download if client disconnects
                        length = -1;
                    }
                } while (length > 0); // Repeat until no data remains
            }
            finally
            {
                // Close the input stream
                if (stream != null)
                {
                    stream.Close();
                }

                // Dispose the response
                if (fileResp != null)
                {
                    fileResp.Close();
                }
            }
        }
    }
}

Dengan menggunakan pendekatan ini, anda boleh menstrim fail daripada URL jauh dan membenarkan pengguna menyimpannya secara setempat dengan nama fail yang dijana secara dinamik.

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

Kenyataan:
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