Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Muat Turun dan Strim Fail dari URL Jauh di 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!