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(); } }
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!