#image #asp.net-core #asp.net-core-mvc
Вопрос:
У меня есть форма для загрузки файла, и я хочу загрузить миниатюру файла в той же форме, в которой я делаю это с этой частью кода :
var basePath2 = Path.Combine(Directory.GetCurrentDirectory() "\Thumbnails\");
bool basePathExists2 = System.IO.Directory.Exists(basePath2);
if (!basePathExists2)
Directory.CreateDirectory(basePath2);
var thumbnailPath = Path.Combine(basePath2, Thumbnail.FileName);
if (!System.IO.File.Exists(thumbnailPath))
{
using (var stream = new FileStream(thumbnailPath, FileMode.Create))
{
await Thumbnail.CopyToAsync(stream);
}
}
Я сохраняю эту модель в базе данных:
var fileModel = new FileUploadViewModel
{
Year = createdOn,
PublishedOn = model.PublishedOn,
FileType = File.ContentType,
Extension = extension,
Name = model.Name,
Description = model.Description,
FilePath = filePath,
Author = model.Author,
ThumbnailPath = thumbnailPath,
};
Когда я хочу показать миниатюру в представлении, это не работает, но у src
меня есть правильный путь, как вы можете видеть на этом скриншоте:
Комментарии:
1. Можете ли вы расширить тему «Это не работает»?
2. «но в src у меня есть правильный путь» —
src
Значение на изображении, которое вы показываете, является путем к файловой системе, а не URL-адресом. Это почти наверняка не «правильный путь». Каков URL -адрес изображения в вашем веб-приложении?3. В URL src есть что-то под названием «Безымянный» (если это не так?), Также, как говорит @david, это путь к файловой системе.
4. я понимаю вас,какой самый простой способ сделать URL-адрес из пути файловой системы ?
5. @DevGary: Это зависит от того, как ваше приложение обслуживает это изображение. Является ли это статическим ресурсом, доступным из папки веб-сайта? Обслуживается ли он динамически путем потоковой передачи через действие контроллера? Что-то еще?
Ответ №1:
В контроллере :
string uniqueThumbName = null;
if (Thumbnail != null)
{
string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "Thumbnails");
uniqueThumbName=Guid.NewGuid().ToString() "_" Thumbnail.FileName;
string filePath2 = Path.Combine(uploadsFolder, uniqueThumbName);
Thumbnail.CopyTo(new FileStream(filePath2, FileMode.Create));
}
var fileModel = new FileUploadViewModel
{
ThumbnailPath=uniqueThumbName,
};
В Поле Зрения :
var thumbPath = "~/Thumbnails/" file.ThumbnailPath;
<img style="width:80px;height:80px;" src="@thumbPath" asp-append-version="true" />