Изображение в ASP.NET MVC

#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" />