Попытка предоставить файлы, которые находятся в байтовом массиве, в моем представлении сведений в веб-приложении ASP.NET Core 2 MVC - PullRequest
0 голосов
/ 26 апреля 2019

В настоящее время у меня есть база данных с двумя таблицами, одна из которых предназначена для продуктов, а другая - для вложенных файлов этих продуктов.Когда я редактирую свой продукт, у меня есть форма для добавления файла.Это нормально загружается в базу данных.

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

Вот моя модель для вложения файла.

namespace Product.Models
{
    public class FileAttachments
    {
        public int ID { get; set; }
        public int ProductID { get; set; }
        public byte[] Attachments { get; set; }
        public string MimeType { get; set; }
        public string FileName { get; set; }
    }
}

ProductID - это мой ключ к основному столу

Вот мой метод загрузки

[HttpPost]
public IActionResult Upload(ICollection<IFormFile> files, int ID)
{
        foreach (var f in files)
        {
            FileAttachments NewFile = new FileAttachments();
            var ms = new MemoryStream();
            f.CopyTo(ms);

            NewFile.Attachments = ms.ToArray();
            NewFile.ProductID = ID;
            NewFile.FileName = f.FileName;
            NewFile.MimeType = f.ContentType;

            _db.Attach(NewFile);
        }

        _db.SaveChanges();

        return Redirect(Request.Headers["Referer"].ToString());
}

1 Ответ

0 голосов
/ 26 апреля 2019

Вот как я понял, как это сделать ...

Это возвращает файлы в моем контроллере вложений.

        public FileContentResult GetFile(int id)
        {
            FileAttachments attachment = _db.FileAttachments.Find(id);
            if (attachment.Attachments != null)
                return File(attachment.Attachments, attachment.MimeType, attachment.FileName);
            else
                return null;
        }

Это код, который я вставил в мое представление данных

            <table class="table table-striped" id="AttachmentTable">
                @foreach (FileAttachments attachment in Model.FileAttachments)
                {
                <td>
                    @Html.ActionLink(attachment.FileName, "GetFile", "Attachment", new { Id = attachment.ID }, null)
                                    @Html.ActionLink("Delete", "Delete", "Attachment", new { id = attachment.ID, returnUrl = Context.Request.Path }, new { @class = "btn btn-danger btn-sm" })
                </td>
                }
            </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...