Soalan:
Bagaimanakah fail boleh distrim daripada URL dan digesa untuk menyimpan dalam pelayar?
Latar Belakang:
Dalam senario ini, fail disimpan dalam direktori yang hampir dipetakan, menjadikannya tidak boleh diakses melalui Server.MapPath. Matlamatnya adalah untuk menstrim fail sambil menghantar URL web dan bukannya laluan fail pelayan.
Penyelesaian:
Untuk mengatasi isu ini, HttpWebRequest boleh digunakan untuk mendapatkan semula fail daripada URL dan strimkannya kembali kepada klien.
// Create stream for the file Stream stream = null; // Chunk size for reading bytes int bytesToRead = 10000; // Buffer for reading bytes byte[] buffer = new Byte[bytesToRead]; try { // HTTP request to get the file HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url); // HTTP response for the request HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse(); // Get response stream stream = fileResp.GetResponseStream(); // Client response object var resp = HttpContext.Current.Response; // Indicate data type resp.ContentType = "application/octet-stream"; // File name resp.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); // File size resp.AddHeader("Content-Length", fileResp.ContentLength.ToString()); int length; do { // Client connected? if (resp.IsClientConnected) { // Read data into buffer length = stream.Read(buffer, 0, bytesToRead); // Write data to output stream resp.OutputStream.Write(buffer, 0, length); // Flush data resp.Flush(); // Clear buffer buffer = new Byte[bytesToRead]; } else { // Cancel if client disconnected length = -1; } } while (length > 0); } finally { // Close input stream if (stream != null) stream.Close(); }
Atas ialah kandungan terperinci Bagaimana untuk Menstrim dan Muat Turun Segera Fail dari URL dalam ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!