Отправить IFormFile обратно с контроллера - Asp Net Core - PullRequest
0 голосов
/ 26 ноября 2018

Я загружаю некоторые файлы с использованием интерфейса IFormFile

<input required asp-for="FeaturedPhoto" type="file" />

Файл загружается правильно, но теперь я хотел бы загрузить его обратно в мою модель, чтобы его можно было использовать в режиме редактирования.

Изображение загружается на сервер, в БД сохраняются только путь и имя.

obj.FeaturedPhoto = new FormFile(); // Need help building this

С уважением,

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете вернуть загруженный файл в виде строки в кодировке base64:

[ProducesResponseType(200, Type = typeof(string))]
public async Task<IActionResult> UploadImage(IFormFile file)
{
    // your other code
    if (file.Length > 0)
    {
        using (var ms = new MemoryStream())
        {
            file.CopyTo(ms);
            var fileBytes = ms.ToArray();
            string s = Convert.ToBase64String(fileBytes);
            return new OkObjectResult(s);
        }
    }
}

На стороне клиента вы можете отобразить изображение следующим образом:

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
    9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="test image" />

Для использования вышеуказанного вам нужнознать ContentType.Вы можете найти это, используя:

file.ContentType
...