.net 6 Api Return File

4 min read Jun 03, 2024
.net 6 Api Return File

Retourner des fichiers à partir d'une API .NET 6

Dans le contexte d'une API .NET 6, il est fréquent de devoir renvoyer des fichiers en réponse à une requête. Que ce soit un document PDF, une image, une feuille de calcul ou un fichier de configuration, l'API doit être capable de gérer la transmission de ces données binaires.

Méthodes de retour de fichiers dans une API .NET 6

Plusieurs approches peuvent être utilisées pour retourner des fichiers à partir d'une API .NET 6. Parmi les plus courantes, on retrouve:

  • L'utilisation d'un flux (Stream): Cette méthode est la plus flexible et performante. Elle permet de lire le fichier en mémoire et de le renvoyer directement au client.
[HttpGet("download/{fileName}")]
public IActionResult DownloadFile(string fileName)
{
    // Chemin du fichier
    string filePath = Path.Combine(Environment.CurrentDirectory, "Files", fileName);

    // Vérifier si le fichier existe
    if (!System.IO.File.Exists(filePath))
    {
        return NotFound();
    }

    // Lire le fichier en flux
    using (var fileStream = System.IO.File.OpenRead(filePath))
    {
        // Définir l'en-tête de réponse
        return File(fileStream, "application/octet-stream", fileName);
    }
}
  • L'utilisation de la méthode File: Cette méthode permet de renvoyer un fichier directement à partir d'un chemin de fichier.
[HttpGet("download/{fileName}")]
public IActionResult DownloadFile(string fileName)
{
    // Chemin du fichier
    string filePath = Path.Combine(Environment.CurrentDirectory, "Files", fileName);

    // Vérifier si le fichier existe
    if (!System.IO.File.Exists(filePath))
    {
        return NotFound();
    }

    // Renvoyer le fichier
    return File(filePath, "application/octet-stream", fileName);
}
  • L'utilisation de IActionResult avec Ok: Cette approche permet de renvoyer le fichier comme une réponse JSON.
[HttpGet("download/{fileName}")]
public IActionResult DownloadFile(string fileName)
{
    // Chemin du fichier
    string filePath = Path.Combine(Environment.CurrentDirectory, "Files", fileName);

    // Vérifier si le fichier existe
    if (!System.IO.File.Exists(filePath))
    {
        return NotFound();
    }

    // Lire le fichier en tableau d'octets
    byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);

    // Renvoyer le fichier en base64
    return Ok(new { FileContent = Convert.ToBase64String(fileBytes), FileName = fileName });
}

En-tête de réponse et type MIME

Il est important de spécifier le type MIME du fichier renvoyé dans l'en-tête de réponse. Cela permet au client de savoir comment gérer le fichier téléchargé. Par exemple, pour un fichier PDF, le type MIME est application/pdf.

Conclusion

Le retour de fichiers à partir d'une API .NET 6 est une opération courante qui nécessite une gestion adéquate des données binaires. Les méthodes présentées ci-dessus offrent une variété d'approches pour répondre à différents besoins. Le choix de la méthode dépendra des exigences spécifiques de votre API et du contexte d'utilisation. N'oubliez pas de gérer les erreurs et de garantir la sécurité du code lors de la manipulation de fichiers.

Related Post