📌  相关文章
📜  .net core web api 将 pdf 文件保存在本地文件夹中 - C# (1)

📅  最后修改于: 2023-12-03 14:59:01.533000             🧑  作者: Mango

.NET Core Web API 将 PDF 文件保存在本地文件夹中 - C#

在.NET Core Web API中,保存PDF文件是一种常见的需求。在本文中,我们将学习如何使用C#编写代码,将PDF文件保存在本地文件夹中。

步骤一:安装NuGet包

我们使用iTextSharp NuGet包来处理PDF文件。打开Visual Studio,右键单击您的项目,然后选择“管理NuGet程序包”。在“浏览”选项卡上搜索“iTextSharp”,然后安装该软件包。

安装 iTextSharp

步骤二:编写代码

我们需要创建一个Web API控制器来保存PDF文件。在Visual Studio中,右键单击您的控制器文件夹,然后选择“添加新项”。选择“Web”>“ASP.NET Core Web应用程序”,并命名它为“SavePDFController”。

在控制器类中,我们将添加一个POST方法,该方法将接收PDF文件,并将其保存到指定的本地文件夹中。以下是完整的控制器类:

using Microsoft.AspNetCore.Mvc;
using System;
using System.IO;

namespace MyPdfFileUpload.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class SavePDFController : ControllerBase
    {
        [HttpPost]
        public IActionResult Post([FromBody] byte[] file)
        {
            try
            {
                var fileName = $"{Guid.NewGuid().ToString()}.pdf"; // Generate a unique file name
                var filePath = Path.Combine(Directory.GetCurrentDirectory(), "PDFs", fileName);

                // Save the file
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    stream.Write(file, 0, file.Length);
                    stream.Flush();
                }

                return Ok();
            }
            catch (Exception ex)
            {
                return StatusCode(500, $"Internal server error: {ex}");
            }
        }
    }
}

在上面的代码中,我们创建了一个响应POST请求的方法。该方法将接受到的PDF文件转换为字节数组,并将其保存在指定的目录中。该目录是'PDFs'文件夹,位于应用程序的根目录中。

步骤三:测试API

现在我们已经完成了我们的代码,可以测试我们的API。使用Postman或其他HTTP客户端工具发送POST请求,将PDF文件上传到我们的Web API。

POST /api/SavePDF HTTP/1.1
Host: localhost:5000
Cache-Control: no-cache
Content-Type: application/pdf
Content-Length: 368379

%PDF-1.7
1 0 obj
<<
...

注意:在上传PDF文件时,请使用Content-Type标头将文件类型设置为'application/pdf'。在下面的代码片段中,我们展示了如何在代码中设置Content-Type标头:

using System.Net.Http;
using System.Net.Http.Headers;

public class MyPdfUploader
{
    public async Task UploadPdf(byte[] pdfBytes)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:5000");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/pdf"));
            using (var content = new ByteArrayContent(pdfBytes))
            {
                var response = await client.PostAsync("/api/SavePDF", content);
                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine("PDF file uploaded successfully.");
                }
            }
        }
    }
}
结论

在本文中,我们展示了如何在.NET Core Web API中完成将PDF文件保存在本地文件夹的过程。我们使用了iTextSharp NuGet包来处理PDF文件,并在我们的控制器中编写了需要的代码。如果您在上一步中上传了PDF文件并获得了成功的响应,那么您应该可以在'PDFs'文件夹中看到已经保存好的PDF文件了!

参考