使用IRONPDF 如何使用 IronPDF for .NET 在 ASP .NET C# 中上传和下载 PDF 文件 Curtis Chau 已发布:十二月 3, 2025 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 管理 PDF 下载文件和上传是 ASP.NET Core MVC(模型-视图-控制器)网络应用程序的常见要求。 无论是使用 EF Core 将文档存储在数据库表中,还是在保存前在服务器端处理文档,开发人员都需要可靠的方法来高效处理 PDF 文档。 本文演示了如何在 ASP .NET C# 中上传和下载 PDF 文件,同时利用 IronPDF 添加水印、按需生成文档并与 .NET Core 项目无缝集成。 如何创建用于 PDF 存储的数据库表? 第一步是创建一个数据库表,将上传的 PDF 文件存储为二进制数据。 下面的代码显示了一个代表文件结构的模型类,该类具有文件名、内容类型和字节数组存储的属性。 这是涉及 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; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 该模型可直接映射到数据库表,其中 FileData 将 PDF 文档存储为二进制变量列。 FileName 属性保留了原始文件名,而 ContentType 则确保在向用户提供下载的 PDF 文件时进行适当的内容处置。 您还可以根据自己的要求添加详细信息列或元数据字段。 如何在 ASP.NET Core 中将 PDF 文件上传到数据库? 要上传一个或多个文件,请创建一个接受 IFormFile 参数的控制器操作。 HTML 表单中的 FileUpload 控件必须使用 enctype="multipart/form-data" 才能将上传的文件正确加载到服务器,并确保 PDF 字节的正确传输。 请注意,您的命名空间将与您的项目名称相同。 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"); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 上传一个简单文件 的用户界面 在这里,IFormFile 接口提供了对上传文件流的访问。 如果您更喜欢文件系统存储而不是数据库,可以在解决方案资源管理器中右键单击项目,然后选择_添加 → 新文件夹_来组织上传的文件。 使用以下表格触发上传: <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> IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 如何处理上传的带有水印的 PDF 文件? 在将上传的 PDF 文件保存到数据库之前,您可以使用 IronPDF 的水印功能对其进行处理。 这样就可以在进入系统的每个 PDF 文档上添加品牌、"DRAFT "标签或 "机密 "印章。 [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"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 带水印的 PDF 文件 。 IronPdf 的 ApplyWatermark 方法支持 HTML 内容、不透明度、旋转和对齐。 这对生成由 HTTP 请求或自动工作者任务触发的报告也很有帮助。 探索更多PDF编辑功能,包括页眉、页脚和页面操作。 如何从数据库下载文件? 要下载存储在数据库中的 PDF 文件,请创建一个可检索字节数组并将其作为 FileResult 返回的操作。 以下代码演示了完整的下载功能: 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); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 带下载按钮的存储 PDF 文件 在显示下载按钮时,您可以搜索条目、显示详细信息,并根据 Query 或过滤器输出结果。 File 方法将返回包含适当内容类型和文件名的字节数组。 这将在用户浏览器中触发下载,并带有适当的内容处置标题。 使用 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> IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 要将文件系统存储作为数据库存储的替代方式,请将文件保存到服务器路径,并在数据库表中仅存储文件路径。 如何按需创建和下载 PDF 文档? 除了存储现有文件外,您还可以使用 IronPDF的HTML-to-PDF转换动态生成新的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"); } 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"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 按需生成 PDF 文件 。 ChromePdfRenderer 类可将 HTML 字符串转换为像素完美的 PDF 文档,支持 CSS 风格和 JavaScript 执行。 此方法可将生成的 PDF 文件直接返回浏览器供下载,而无需中间存储。 此方法无需默认存储,通过 HTTP GET 即刻触发。 开始免费试用,探索 IronPDF 用于 ASP.NET Core PDF 处理的全部功能,包括合并文档、表格填写和数字签名。 结论 在 ASP.NET Core 中实现 PDF 上传和下载功能结合了标准文件处理技术和 IronPDF 的高级处理功能。 有了水印、生成、存储和提供 PDF 文件的功能,您的应用程序将变得更加强大和用户友好。 您可以集成更多的功能,如合并文档、添加元数据、填写表格或生成交互式内容。 查看 IronPDF 的参考文档或浏览我们的博客中的新教程,了解高级功能。 您的代码有以下错误问题吗? 查看有用的故障排除指南。 准备好用高级 PDF 功能增强您的 ASP.NET Core 应用程序了吗? 购买 IronPDF 许可证用于生产部署,访问 详尽的文档了解更多信息,或 与我们的团队聊天,以获得有关您特定项目要求的指导。 常见问题解答 如何在 ASP.NET Core MVC 应用程序中上传 PDF 文件? 要在 ASP.NET Core MVC 应用程序中上传 PDF 文件,您可以使用 IFormFile 接口从表单中捕获文件数据,然后在保存之前在服务器端进行处理,可能的话还可以借助 IronPDF 进一步处理 PDF。 在 ASP.NET 中下载 PDF 文件的最佳方法是什么? 在 ASP.NET 中下载 PDF 文件的最佳方法是在控制器中使用 FileResult 操作。IronPDF 可协助在服务器端生成和修改 PDF 文件,以确保它们随时可供下载。 能否使用 ASP.NET 在数据库中存储 PDF 文件? 是的,您可以使用 ASP.NET 将 PDF 文件转换为字节数组并保存为二进制大对象 (BLOB),从而将 PDF 文件存储到数据库中。IronPDF 可以帮助在存储前处理 PDF。 IronPDF 如何帮助在 ASP.NET 中添加 PDF 水印? IronPDF 为 PDF 提供了轻松添加文本或图像水印的功能,可将其集成到您的 ASP.NET 应用程序中,以便在下载或存储前修改文档。 使用 EF Core 存储 PDF 有哪些优势? EF Core 可实现高效的对象关系映射,使您更容易在 ASP.NET 应用程序中以结构化和可扩展的方式管理 PDF 的存储和检索。 是否可以在 ASP.NET 应用程序中处理 PDF 内容? 是的,使用 IronPDF,您可以操作 PDF 内容,包括编辑文本、图像和元数据,这对于在文档提供给用户之前对其进行定制非常有用。 如何在 ASP.NET 中安全地处理文件上传? 要在 ASP.NET 中安全地处理文件上传,应验证文件类型、限制文件大小并将其存储在安全位置。使用 IronPDF 等库还有助于确保 PDF 文件本身的完整性。 在网络应用程序中使用 PDF 时有哪些常见挑战? 常见的挑战包括确保文件兼容性、管理大文件大小以及保持文档完整性。IronPDF 为 PDF 创建和操作提供了强大的工具,有助于克服这些难题。 我能否在 ASP.NET 中将不同类型的文件转换为 PDF? 是的,IronPDF 允许您在 ASP.NET 应用程序中将 HTML 或图像文件等各种文件类型无缝转换为 PDF。 在 ASP.NET 中处理 PDF 时,模型-视图-控制器 (MVC) 的作用是什么? MVC 模式通过分离数据处理(模型)、用户界面(视图)和应用逻辑(控制器)来帮助组织处理 PDF 的代码,从而使管理和扩展 PDF 功能变得更加容易。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已发布十二月 18, 2025 .NET PDF API 是 .NET 开发人员的指南。 如何使用 IronPDF for .NET 创建 .NET PDF API 阅读更多 已发布十二月 18, 2025 如何使用 Aspose C# 和 IronPDF 创建 PDF 通过这本专为开发人员设计的分步指南,了解如何使用 Aspose C# 和 IronPDF 创建 PDF。 阅读更多 已发布十二月 18, 2025 使用 IronPDF 创建 .NET Core PDF 生成器 使用 IronPDF 在 .NET Core 中构建强大的 PDF 生成器。将 HTML 转换为 PDF,创建发票,并通过像素完美的渲染生成报告。 阅读更多 如何使用 IronPDF 通过 C# 在电子邮件中将生成的 PDF 文件作为附件发送经典 ASP:使用 IronPDF 从 HTM...
已发布十二月 18, 2025 如何使用 Aspose C# 和 IronPDF 创建 PDF 通过这本专为开发人员设计的分步指南,了解如何使用 Aspose C# 和 IronPDF 创建 PDF。 阅读更多
已发布十二月 18, 2025 使用 IronPDF 创建 .NET Core PDF 生成器 使用 IronPDF 在 .NET Core 中构建强大的 PDF 生成器。将 HTML 转换为 PDF,创建发票,并通过像素完美的渲染生成报告。 阅读更多