Maison > développement back-end > C++ > Comment télécharger ou diffuser des fichiers à partir d'URL dans ASP.NET ?

Comment télécharger ou diffuser des fichiers à partir d'URL dans ASP.NET ?

Barbara Streisand
Libérer: 2025-01-06 08:17:41
original
532 Les gens l'ont consulté

How to Download or Stream Files from URLs in ASP.NET?

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();
  }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal