Frage:
Wie kann eine Datei von einem gestreamt werden? URL und werden zum Speichern aufgefordert Browser?
Hintergrund:
In diesem Szenario wird eine Datei in einem virtuell zugeordneten Verzeichnis gespeichert, sodass über Server.MapPath nicht darauf zugegriffen werden kann. Das Ziel besteht darin, die Datei zu streamen und dabei eine Web-URL anstelle eines Serverdateipfads zu übergeben.
Lösung:
Um dieses Problem zu lösen, kann HttpWebRequest zum Abrufen verwendet werden Laden Sie die Datei von der URL herunter und streamen Sie sie zurück zum Client.
// 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(); }
Das obige ist der detaillierte Inhalt vonWie streame und veranlasse ich den Download einer Datei von einer URL in ASP.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!