Как я могу получить сохраненный файл PDF в SQL Server, сохраненный в двоичном виде? - PullRequest
0 голосов
/ 29 марта 2019

Я проверил много вопросов в 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));
}

Я бы хотел, чтобы он мог получить данные и затем загрузить их.

Я ценю любую помощь.

1 Ответ

2 голосов
/ 29 марта 2019

Для возврата байтов требуется действие:

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");
}

Затем вы можете просто связать это действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...