Télécharger ou diffuser des fichiers à partir d'URL dans ASP.NET
Vous pouvez rencontrer des scénarios dans lesquels vous devez télécharger ou diffuser des fichiers à partir d'URL dans votre Applications ASP.NET. Cependant, des problèmes surviennent lorsque ces fichiers résident dans des répertoires virtuellement mappés, ce qui rend impossible la détermination de leur emplacement réel à l'aide de Server.MapPath.
Une solution à ce problème consiste à utiliser la classe HttpWebRequest pour récupérer le fichier et le diffuser. retour au client. Cela vous permet d'accéder aux fichiers via des URL au lieu de chemins de fichiers.
Considérez l'extrait de code suivant :
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(); } }
En mettant en œuvre cette approche, vous pouvez diffuser des fichiers à partir d'URL et les afficher directement dans le navigateur ou permettre aux utilisateurs de les enregistrer sur leurs systèmes locaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!