
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!