Нет.Это невозможно, и неясно, почему вы хотите.Предполагая, что это выполняется в традиционной HTML-форме, вы должны связать поле загрузки со свойством типа IFormFile
.Это тогда дает вам доступ к потоку, который вы можете преобразовать в Base64, если хотите, после того, как:
using (var ms = new MemoryStream())
using (var fs = model.ImageUpload.OpenReadStream())
{
await fs.CopyToAsync(ms);
model.ImageUrl = $"data:{model.ImageUpload.ContentType};base64,{Convert.ToBase64String(ms.ToArray())}";
}
Для чего бы вы ни стояли, вы должны избегать URI данных, особенно для пользовательских файлов загрузки.Существуют две проблемы с URI данных, которые существенно влияют на производительность страницы:
Они доставляются в виде содержимого HTML, что означает, что загрузка страницы займет больше времени, а браузеру - больше.разобрать и сделать это.Допустим, ваш HTML-документ имеет размер 1 КБ, а у вас изображение размером 50 КБ.В качестве URI данных браузер загружает все 51 КБ за один раз и может начать рендеринг только после завершения.Как обычный URL, браузер загружает документ размером 1 КБ и сразу же начинает рендеринг, заполняя изображение, когда оно, наконец, прибывает.Эта ситуация экспоненциально ухудшается, чем больше изображений вы включаете на страницу таким образом.Для сайта с большим количеством изображений вы можете легко форсировать загрузку в несколько мегабайт, прежде чем браузер сможет что-либо сделать.
Base64 - очень неэффективная кодировка.Это может раздувать изображения размером 150% и более.Таким образом, если ваш образ имеет размер 50 КБ, его версия в кодировке Base64, скорее всего, будет 75 КБ.Опять же, чем больше вы это делаете, тем больше веса вы добавляете на свою страницу.И в сочетании с пунктом 1 выше вы раздражаете и без того большую проблему.
URI данных лучше всего зарезервировать для очень маленьких простых изображений, таких как значок или что-то еще.Когда вы начнете использовать их с такими вещами, как фотографии, у вас будут большие проблемы.Тот факт, что вы разрешаете пользовательские загрузки, означает, что вы даже не можете полностью контролировать, насколько большими будут URI данных, если вы не ограничите размер загрузки чем-то незначительным.По умолчанию пользователь может загружать до 2 МБ файлов.Это может означать, что вы отправляете 3 МБ или более встроенного документа HTML, что, честно говоря, просто безумие.Конечно, вы можете изменять размер или сжимать загружаемые пользователем изображения, чтобы сделать их меньше, но вы должны помнить об этом.