Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment charger et télécharger des fichiers PDF en ASP .NET C# avec IronPDF

La gestion des fichiers de téléchargement PDF et des téléchargements est une exigence courante dans les applications web ASP.NET Core MVC (Modèle-Vue-Contrôleur). Qu'il s'agisse de stocker des documents dans une table de base de données à l'aide d'EF Core ou de les traiter côté serveur avant de les enregistrer, les développeurs ont besoin de méthodes fiables pour traiter efficacement les documents PDF.

Cet article montre comment charger et télécharger un fichier PDF en ASP .NET C# tout en tirant parti d'IronPDF pour ajouter des filigranes, générer des documents à la demande et s'intégrer de manière transparente aux projets .NET Core.

Comment créer une table de base de données pour le stockage de PDF?

La première étape consiste à créer une table de base de données pour stocker les fichiers PDF téléchargés sous forme de données binaires. Le code suivant montre une classe modèle représentant la structure du fichier avec des propriétés pour le nom du fichier, le type de contenu et le stockage en tableau d'octets. Il s'agit d'un modèle courant dans les nouveaux tutoriels concernant la persistance des fichiers dans EF Core.

public class PdfFileModel
{
    public int Id { get; set; }
    public string FileName { get; set; }
    public string ContentType { get; set; }
    public byte[] FileData { get; set; }
    public DateTime UploadedDate { get; set; }
}
public class PdfFileModel
{
    public int Id { get; set; }
    public string FileName { get; set; }
    public string ContentType { get; set; }
    public byte[] FileData { get; set; }
    public DateTime UploadedDate { get; set; }
}
Public Class PdfFileModel
    Public Property Id As Integer
    Public Property FileName As String
    Public Property ContentType As String
    Public Property FileData As Byte()
    Public Property UploadedDate As DateTime
End Class
$vbLabelText   $csharpLabel

Ce modèle correspond directement à une table de base de données où FileData stocke le document PDF sous la forme d'une colonne varbinaire. La propriété FileName préserve le nom du fichier original, tandis que ContentType assure une disposition correcte du contenu lors de la diffusion du fichier PDF téléchargé aux utilisateurs. Vous pouvez également ajouter des colonnes de détails ou des champs de métadonnées en fonction de vos besoins.

Comment télécharger des fichiers PDF vers une base de données en ASP.NET Core?

Pour télécharger un ou plusieurs fichiers, créez une action de contrôleur qui accepte un paramètre IFormFile. Le contrôle FileUpload de votre formulaire HTML doit utiliser enctype="multipart/form-data" pour charger correctement le fichier téléchargé vers le serveur et s'assurer que les octets PDF sont transmis correctement. Notez que votre espace de noms sera le même que le nom de votre projet.

namespace UploadPdfs.Controllers
{
public class PdfController : Controller
{
    private readonly ApplicationDbContext _context;
    public PdfController(ApplicationDbContext context)
    {
        _context = context;
    }
    [HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("No file selected");
        using (var stream = new MemoryStream())
        {
            await file.CopyToAsync(stream);
            var pdfFile = new PdfFileModel
            {
                FileName = file.FileName,
                ContentType = file.ContentType,
                FileData = stream.ToArray(),
                UploadedDate = DateTime.Now
            };
            _context.PdfFiles.Add(pdfFile);
            await _context.SaveChangesAsync();
        }
        return RedirectToAction("Index");
    }
}
}
namespace UploadPdfs.Controllers
{
public class PdfController : Controller
{
    private readonly ApplicationDbContext _context;
    public PdfController(ApplicationDbContext context)
    {
        _context = context;
    }
    [HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("No file selected");
        using (var stream = new MemoryStream())
        {
            await file.CopyToAsync(stream);
            var pdfFile = new PdfFileModel
            {
                FileName = file.FileName,
                ContentType = file.ContentType,
                FileData = stream.ToArray(),
                UploadedDate = DateTime.Now
            };
            _context.PdfFiles.Add(pdfFile);
            await _context.SaveChangesAsync();
        }
        return RedirectToAction("Index");
    }
}
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Http
Imports Microsoft.AspNetCore.Mvc

Namespace UploadPdfs.Controllers
    Public Class PdfController
        Inherits Controller

        Private ReadOnly _context As ApplicationDbContext

        Public Sub New(context As ApplicationDbContext)
            _context = context
        End Sub

        <HttpPost>
        Public Async Function Upload(file As IFormFile) As Task(Of IActionResult)
            If file Is Nothing OrElse file.Length = 0 Then
                Return BadRequest("No file selected")
            End If

            Using stream As New MemoryStream()
                Await file.CopyToAsync(stream)
                Dim pdfFile As New PdfFileModel With {
                    .FileName = file.FileName,
                    .ContentType = file.ContentType,
                    .FileData = stream.ToArray(),
                    .UploadedDate = DateTime.Now
                }
                _context.PdfFiles.Add(pdfFile)
                Await _context.SaveChangesAsync()
            End Using

            Return RedirectToAction("Index")
        End Function
    End Class
End Namespace
$vbLabelText   $csharpLabel

Téléchargement d'un fichier simple

Comment charger et télécharger des fichiers PDF en ASP .NET C# avec IronPDF : Image 1 - Interface utilisateur montrant le PDF téléchargé

Ici, l'interface IFormFile permet d'accéder au flux du fichier téléchargé. Vous pouvez cliquer avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions et choisir Ajouter → Nouveau dossier pour organiser les fichiers téléchargés si vous préférez le stockage dans un système de fichiers plutôt que dans une base de données.

Utilisez le formulaire suivant pour déclencher les téléchargements :

<form method="post" action="/Pdf/Upload" enctype="multipart/form-data">
    <button type="submit">Upload</button>
</form>
<form method="post" action="/Pdf/Upload" enctype="multipart/form-data">
    <button type="submit">Upload</button>
</form>
The provided code is HTML, not C#. Therefore, it doesn't require conversion to VB.NET. If you have any C# code that needs conversion, please provide it, and I'll be happy to assist.
$vbLabelText   $csharpLabel

Comment traiter les fichiers PDF téléchargés avec filigrane?

Avant d'enregistrer les fichiers PDF téléchargés dans la base de données, vous pouvez les traiter en utilisant les fonctions de filigrane d'IronPDF. Cela permet d'ajouter une image de marque, des étiquettes "DRAFT" ou des tampons "CONFIDENTIAL" à chaque document PDF qui entre dans votre système.

[HttpPost]
 public async Task<IActionResult> UploadWithWatermark(IFormFile file)
 {
     if (file == null || file.Length == 0)
         return BadRequest("No file selected");
     // 1. Read the uploaded file into a byte array
     using (var stream = new MemoryStream())
     {
         await file.CopyToAsync(stream);
         byte[] fileBytes = stream.ToArray();
         // 2. Process with IronPDF (Apply Watermark)
         var PDF = new IronPdf.PdfDocument(fileBytes);
         pdf.ApplyWatermark("<h2 style='color:red'>CONFIDENTIAL</h2>", 60, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
         // 3. Define the new file name and path
         string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
         string filePath = Path.Combine(_storagePath, uniqueFileName);
         // 4. Save the processed bytes to the file system
         System.IO.File.WriteAllBytes(filePath, pdf.BinaryData);
         // 5. Save metadata to the in-memory list (instead of DB)
         var pdfFile = new PdfFileModel
         {
             Id = _nextId++,
             FileName = file.FileName,
             ContentType = "application/pdf",
             FilePath = filePath, // Store the physical path
             UploadedDate = DateTime.Now
         };
         _pdfFiles.Add(pdfFile);
     }
     return RedirectToAction("Index");
 }
[HttpPost]
 public async Task<IActionResult> UploadWithWatermark(IFormFile file)
 {
     if (file == null || file.Length == 0)
         return BadRequest("No file selected");
     // 1. Read the uploaded file into a byte array
     using (var stream = new MemoryStream())
     {
         await file.CopyToAsync(stream);
         byte[] fileBytes = stream.ToArray();
         // 2. Process with IronPDF (Apply Watermark)
         var PDF = new IronPdf.PdfDocument(fileBytes);
         pdf.ApplyWatermark("<h2 style='color:red'>CONFIDENTIAL</h2>", 60, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
         // 3. Define the new file name and path
         string uniqueFileName = Guid.NewGuid().ToString() + "_" + file.FileName;
         string filePath = Path.Combine(_storagePath, uniqueFileName);
         // 4. Save the processed bytes to the file system
         System.IO.File.WriteAllBytes(filePath, pdf.BinaryData);
         // 5. Save metadata to the in-memory list (instead of DB)
         var pdfFile = new PdfFileModel
         {
             Id = _nextId++,
             FileName = file.FileName,
             ContentType = "application/pdf",
             FilePath = filePath, // Store the physical path
             UploadedDate = DateTime.Now
         };
         _pdfFiles.Add(pdfFile);
     }
     return RedirectToAction("Index");
 }
Imports System
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Http
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<HttpPost>
Public Async Function UploadWithWatermark(file As IFormFile) As Task(Of IActionResult)
    If file Is Nothing OrElse file.Length = 0 Then
        Return BadRequest("No file selected")
    End If

    ' 1. Read the uploaded file into a byte array
    Using stream As New MemoryStream()
        Await file.CopyToAsync(stream)
        Dim fileBytes As Byte() = stream.ToArray()

        ' 2. Process with IronPDF (Apply Watermark)
        Dim pdf As New PdfDocument(fileBytes)
        pdf.ApplyWatermark("<h2 style='color:red'>CONFIDENTIAL</h2>", 60, Editing.VerticalAlignment.Middle, Editing.HorizontalAlignment.Center)

        ' 3. Define the new file name and path
        Dim uniqueFileName As String = Guid.NewGuid().ToString() & "_" & file.FileName
        Dim filePath As String = Path.Combine(_storagePath, uniqueFileName)

        ' 4. Save the processed bytes to the file system
        System.IO.File.WriteAllBytes(filePath, pdf.BinaryData)

        ' 5. Save metadata to the in-memory list (instead of DB)
        Dim pdfFile As New PdfFileModel With {
            .Id = _nextId,
            .FileName = file.FileName,
            .ContentType = "application/pdf",
            .FilePath = filePath, ' Store the physical path
            .UploadedDate = DateTime.Now
        }
        _nextId += 1
        _pdfFiles.Add(pdfFile)
    End Using

    Return RedirectToAction("Index")
End Function
$vbLabelText   $csharpLabel

PDF en filigrane

Comment charger et télécharger des fichiers PDF en ASP .NET C# avec IronPDF : Image 2 - PDF filigrané puis enregistré dans notre base de données

La méthode ApplyWatermark d'IronPDF prend en charge le contenu HTML, l'opacité, la rotation et l'alignement. Cela est également utile pour générer des rapports déclenchés par des requêtes HTTP ou des tâches automatisées. Découvrez d'autres capacités d'édition de PDF pour les en-têtes, les pieds de page et la manipulation des pages.

Comment télécharger des fichiers à partir de la base de données?

Pour télécharger des fichiers PDF stockés dans votre base de données, créez une action qui récupère le tableau d'octets et le renvoie sous la forme d'un FileResult. Le code suivant illustre la fonctionnalité complète de téléchargement :

public IActionResult Download(int id)
{
    var pdfFile = _pdfFiles.FirstOrDefault(f => f.Id == id);
    if (pdfFile == null || !System.IO.File.Exists(pdfFile.FilePath))
        return NotFound();
    byte[] fileBytes = System.IO.File.ReadAllBytes(pdfFile.FilePath);
    return File(fileBytes, pdfFile.ContentType, pdfFile.FileName);
}
public IActionResult Download(int id)
{
    var pdfFile = _pdfFiles.FirstOrDefault(f => f.Id == id);
    if (pdfFile == null || !System.IO.File.Exists(pdfFile.FilePath))
        return NotFound();
    byte[] fileBytes = System.IO.File.ReadAllBytes(pdfFile.FilePath);
    return File(fileBytes, pdfFile.ContentType, pdfFile.FileName);
}
Public Function Download(id As Integer) As IActionResult
    Dim pdfFile = _pdfFiles.FirstOrDefault(Function(f) f.Id = id)
    If pdfFile Is Nothing OrElse Not System.IO.File.Exists(pdfFile.FilePath) Then
        Return NotFound()
    End If
    Dim fileBytes As Byte() = System.IO.File.ReadAllBytes(pdfFile.FilePath)
    Return File(fileBytes, pdfFile.ContentType, pdfFile.FileName)
End Function
$vbLabelText   $csharpLabel

Fichiers PDF stockés avec boutons de téléchargement

Comment charger et télécharger des fichiers PDF en ASP .NET C# avec IronPDF : Image 3 - Liste des fichiers PDF stockés

Lorsque vous affichez des boutons de téléchargement, vous pouvez rechercher des entrées, afficher des détails et produire des résultats en fonction d'une Query ou d'un filtre.

La méthode File renvoie le tableau d'octets avec le type de contenu et le nom de fichier appropriés. Cela déclenche un téléchargement dans le navigateur de l'utilisateur avec des en-têtes de disposition de contenu appropriés. Affichez un bouton de téléchargement dans votre vue à l'aide des aides HTML :

<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.FileName</td>
            <td>@item.UploadedDate</td>
            <td>
                <a href="/Pdf/Download/@item.Id">Download</a>
            </td>
        </tr>
    }
</table>
<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.FileName</td>
            <td>@item.UploadedDate</td>
            <td>
                <a href="/Pdf/Download/@item.Id">Download</a>
            </td>
        </tr>
    }
</table>
$vbLabelText   $csharpLabel

Pour le stockage dans le système de fichiers comme alternative au stockage dans la base de données, enregistrez les fichiers dans un chemin d'accès au serveur et ne stockez que le chemin d'accès au fichier dans votre table de base de données.

Comment créer et télécharger des documents PDF à la demande ?

Au-delà du stockage de fichiers existants, vous pouvez générer de nouveaux documents PDF de manière dynamique en utilisant la conversion HTML-to-PDF d'IronPDF. Cette approche permet de créer des rapports, des factures ou des certificats à la demande :

public IActionResult GeneratePdf()
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var PDF = renderer.RenderHtmlAsPdf("<h1>Generated Report</h1><p>Created: " + DateTime.Now + "</p>");
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
public IActionResult GeneratePdf()
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var PDF = renderer.RenderHtmlAsPdf("<h1>Generated Report</h1><p>Created: " + DateTime.Now + "</p>");
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
Imports IronPdf

Public Function GeneratePdf() As IActionResult
    Dim renderer As New ChromePdfRenderer()
    Dim PDF = renderer.RenderHtmlAsPdf("<h1>Generated Report</h1><p>Created: " & DateTime.Now & "</p>")
    Return File(PDF.BinaryData, "application/pdf", "report.pdf")
End Function
$vbLabelText   $csharpLabel

PDF généré à la demande

Comment charger et télécharger des fichiers PDF en ASP .NET C# avec IronPDF : Image 4 - Exemple de PDF généré

La classe ChromePdfRenderer convertit les chaînes HTML en documents PDF parfaits au pixel près, en prenant en charge le style CSS et l'exécution JavaScript. Cette méthode renvoie le fichier PDF généré directement au navigateur pour téléchargement sans stockage intermédiaire. Cette méthode ne nécessite pas de stockage par défaut et est déclenchée instantanément via HTTP GET.

Démarrez votre essai gratuit pour découvrir toutes les fonctionnalités d'IronPDF pour le traitement des PDF ASP.NET Core, notamment fusion de documents, remplissage de formulaires, et signatures numériques.

Conclusion

La mise en œuvre de la fonctionnalité de chargement et de téléchargement de PDF dans ASP.NET Core combine des techniques de traitement de fichiers standard avec les capacités de traitement avancées d'IronPDF. Avec la possibilité de filigraner, de générer, de stocker et de servir des fichiers PDF, votre application devient plus robuste et plus conviviale.

Vous pouvez intégrer d'autres fonctionnalités telles que la fusion de documents, l'ajout de métadonnées, le remplissage de formulaires ou la génération de contenu interactif. Consultez la documentation de référence d'IronPDF ou parcourez les nouveaux tutoriels dans notre blog pour connaître les capacités avancées. Vous avez des problèmes d'erreur avec votre code ? Consultez les guides de dépannage utiles.

Vous êtes prêt à améliorer votre application ASP.NET Core avec des fonctionnalités PDF avancées ? Achetez une licence IronPDF pour un déploiement en production, visitez les documentations exhaustives pour obtenir des informations supplémentaires, ou chattez avec notre équipe pour obtenir des conseils sur les exigences spécifiques de votre projet.

Questions Fréquemment Posées

Comment puis-je télécharger des fichiers PDF dans une application ASP.NET Core MVC ?

Pour télécharger des fichiers PDF dans une application ASP.NET Core MVC, vous pouvez utiliser l'interface IFormFile pour capturer les données d'un fichier à partir d'un formulaire, puis les traiter côté serveur avant de les enregistrer, éventuellement avec l'aide d'IronPDF pour une manipulation plus poussée du PDF.

Quelle est la meilleure façon de télécharger des fichiers PDF en ASP.NET ?

La meilleure façon de télécharger des fichiers PDF en ASP.NET est d'utiliser l'action FileResult dans votre contrôleur. IronPDF peut aider à générer et à modifier les PDF côté serveur pour s'assurer qu'ils sont prêts à être téléchargés.

Puis-je stocker des fichiers PDF dans une base de données en utilisant ASP.NET ?

Oui, vous pouvez stocker des fichiers PDF dans une base de données à l'aide d'ASP.NET en convertissant le fichier en un tableau d'octets et en l'enregistrant en tant qu'objet binaire de grande taille (BLOB). IronPDF peut aider à traiter le PDF avant de le stocker.

Comment IronPDF aide-t-il à filigraner les PDF en ASP.NET ?

IronPDF offre une fonctionnalité permettant d'ajouter facilement des filigranes de texte ou d'image aux PDF, qui peuvent être intégrés à votre application ASP.NET pour modifier les documents avant leur téléchargement ou leur stockage.

Quels sont les avantages de l'utilisation d'EF Core pour le stockage des PDF ?

EF Core permet un mappage objet-relationnel efficace, ce qui facilite la gestion du stockage et de la récupération des PDF de manière structurée et évolutive au sein de votre application ASP.NET.

Est-il possible de manipuler du contenu PDF dans des applications ASP.NET ?

Oui, avec IronPDF, vous pouvez manipuler le contenu des PDF, notamment en modifiant le texte, les images et les métadonnées, ce qui peut être utile pour personnaliser les documents avant qu'ils ne soient servis aux utilisateurs.

Comment puis-je gérer les téléchargements de fichiers en toute sécurité en ASP.NET ?

Pour gérer les téléchargements de fichiers en toute sécurité en ASP.NET, vous devez valider les types de fichiers, limiter leur taille et les stocker dans des emplacements sécurisés. L'utilisation de bibliothèques telles qu'IronPDF peut également contribuer à garantir l'intégrité des fichiers PDF eux-mêmes.

Quels sont les défis courants liés à l'utilisation des PDF dans les applications web ?

Parmi les défis courants, citons la compatibilité des fichiers, la gestion de fichiers volumineux et le maintien de l'intégrité des documents. IronPDF aide à surmonter ces difficultés en fournissant des outils robustes pour la création et la manipulation de PDF.

Puis-je convertir différents types de fichiers en PDF en ASP.NET ?

Oui, IronPDF vous permet de convertir divers types de fichiers, tels que des fichiers HTML ou des fichiers images, en PDF de manière transparente au sein de votre application ASP.NET.

Quel est le rôle du modèle-vue-contrôleur (MVC) dans la gestion des PDF en ASP.NET ?

Le modèle MVC permet d'organiser le code pour gérer les PDF en séparant le traitement des données (modèle), l'interface utilisateur (vue) et la logique d'application (contrôleur), ce qui facilite la gestion et l'extension des fonctionnalités des PDF.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite