我已经检查了关于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));
}
我希望它能够检索数据然后下载。
感谢您的帮助。
答案 0 :(得分:2)
您需要执行一项操作以返回字节:
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");
}
然后,您只需链接到此操作即可。