如何在SQL Server中检索保存的PDF文件,存储为二进制文件



我已经检查了StackOverflow上的许多问题,并在许多不同的网站上搜索了可能的解决方案,但我似乎找不到任何答案。有些不工作,有些很老,也不工作。

我已经将.pdf文件保存在SQL Server中作为二进制文件。似乎有效。但是我不知道如何检索数据并将byte[]转回.pdf文件并使其可供下载。

这是我的模型,我将.pdf文件保存在byte[]

public class Language
{
    public int Id { get; set; }
    public string Name { get; set; }
    public byte[] Certificate { get; set; }
}

这是我上传到数据库的方式:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(string name, IFormFile certificate)
{
    Language language = new Language()
    {
        Name = name
    };
    if(certificate.Length > 0)
    {
        using (var stream = new MemoryStream())
        {
            await certificate.CopyToAsync(stream);
            language.Certificate = stream.ToArray();
        }
    }
    _context.Add(language);
    await _context.SaveChangesAsync();
    return RedirectToAction(nameof(Index));
}

我希望它能够检索数据,然后下载它。

我感谢任何帮助。

您需要一个操作来返回字节:

public async Task<IActionResult> GetCertificate(int id)
{
    var language = await _context.Languages.FindAsync(id);
    if (language == null)
        return NotFound();
    return File(language.Certificate, "application/pdf");
}

然后,您可以简单地链接到此操作。

最新更新