Dateien von URLs in ASP.NET herunterladen oder streamen
Es kann vorkommen, dass Sie Dateien von URLs in Ihrem herunterladen oder streamen müssen ASP.NET-Anwendungen. Allerdings entstehen Herausforderungen, wenn sich diese Dateien in virtuell zugeordneten Verzeichnissen befinden, sodass es unmöglich ist, ihre tatsächlichen Speicherorte mithilfe von Server.MapPath zu bestimmen.
Eine Lösung hierfür besteht darin, die Klasse HttpWebRequest zu verwenden, um die Datei abzurufen und zu streamen zurück zum Kunden. Dadurch können Sie über URLs statt über Dateipfade auf Dateien zugreifen.
Bedenken Sie den folgenden Codeausschnitt:
try { // Create a WebRequest to retrieve the file HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url); // Get a response for the request HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse(); if (fileReq.ContentLength > 0) fileResp.ContentLength = fileReq.ContentLength; // Get the response stream Stream stream = fileResp.GetResponseStream(); // Prepare the response to the client HttpContext.Current.Response.ContentType = MediaTypeNames.Application.Octet; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); HttpContext.Current.Response.AddHeader("Content-Length", fileResp.ContentLength.ToString()); int length; byte[] buffer = new byte[10000]; // Chunk size for reading the file do { // Check if the client is connected if (HttpContext.Current.Response.IsClientConnected) { // Read data into the buffer length = stream.Read(buffer, 0, buffer.Length); // Write it out to the response's output stream HttpContext.Current.Response.OutputStream.Write(buffer, 0, length); // Flush the data HttpContext.Current.Response.Flush(); // Clear the buffer buffer = new byte[buffer.Length]; } else { // Cancel the download if the client has disconnected length = -1; } } while (length > 0); } catch { // Handle any errors that may occur } finally { if (stream != null) { // Close the input stream stream.Close(); } }
Durch die Implementierung dieses Ansatzes können Sie Dateien von URLs streamen und direkt in anzeigen den Browser oder erlauben Sie Benutzern, sie auf ihren lokalen Systemen zu speichern.
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien von URLs in ASP.NET herunter oder streame sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!