Здравствуйте, у меня проблемы с отображением изображения и PDF на моем экране. Когда я нажимаю на кнопку, которая открывает модальное окно, чтобы показать изображение, оно говорит, что оно не может быть показано, потому что оно содержит ошибки. Файл PDF показывает пустой, и когда я загружаю его, его 0 байтов.
Вот модель:
public class Libro
{
public int Id { get; set; }
[Display(Name ="Titulo")]
[Required(ErrorMessage = "Por favor, ingrese el titulo del libro.")]
public string Title { get; set; }
[Display(Name = "Autor")]
[Required(ErrorMessage = "Por favor, ingrese el nombre del autor.")]
public string Autor { get; set; }
[Display(Name ="Foto de Portada")]
public string Portada { get; set; }
[Display(Name = "Editorial")]
[Required(ErrorMessage = "Por favor, ingrese el nombre de la editorial")]
public string Editorial { get; set; }
[Display(Name = "Año de Publicacion")]
[Required(ErrorMessage = "Por favor, ingrese el año en que se publico el libro.")]
public DateTime PublishDate { get; set; }
[Display(Name = "Libro PDF")]
public string ArchivoPdf { get; set; }
}
Мой код просмотра (то же самое для файла PDF, за исключением <img>
tag):
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#modalPortada">
Ver Imagen
</button>
<div class="modal fade" id="modalPortada" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title" id="myModalLabel">Portada</h3>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<div style="text-align: center;">
<img src="@Url.Content(item.Portada)"/>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
Мой контроллер Действие индекса:
public async Task<IActionResult> Index()
{
return View(await _context.Libros.ToListAsync());
}
И как мне загрузить файлы в папку wwwroot:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(LibrosViewModel libro)
{
if (!ModelState.IsValid)
{
return View(libro);
}
Libro libroNuevo = await DameLibroConArchivos(libro);
_context.Add(libroNuevo);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private async Task<Libro> DameLibroConArchivos(LibrosViewModel libro)
{
Libro libroNuevo = new Libro();
libroNuevo.Id = libro.Id;
libroNuevo.Title = libro.Title;
libroNuevo.Autor = libro.Autor;
libroNuevo.Editorial = libro.Editorial;
libroNuevo.PublishDate = libro.PublishDate;
if (libro.filePortada != null)
{
string pathPortada = Path.Combine(_environment.WebRootPath, "ArchivosLibros/Portadas/" + libro.Title.Replace(" ", "_"));
libroNuevo.Portada = Path.Combine(pathPortada, libro.filePortada.FileName);
if (!Directory.Exists(pathPortada))
{
Directory.CreateDirectory(pathPortada);
}
using (var stream1 = new FileStream(Path.Combine(pathPortada,libro.filePortada.FileName) , FileMode.Create))
{
await libro.filePortada.CopyToAsync(stream1);
}
}
if (libro.filePdf != null)
{
string pathPdf = Path.Combine(_environment.WebRootPath, "ArchivosLibros/Libros/" + libro.Title.Replace(" ", "_"));
libroNuevo.ArchivoPdf = Path.Combine(pathPdf, libro.filePdf.FileName);
if (!Directory.Exists(pathPdf))
{
Directory.CreateDirectory(pathPdf);
}
using (var stream2 = new FileStream(Path.Combine(pathPdf,libro.filePdf.FileName), FileMode.Create))
{
await libro.filePdf.CopyToAsync(stream2);
}
}
return libroNuevo;
}
``