我正在使用IFormFile添加图像,然后将文件转换为字节数组并将其保存到我的数据库中,这比我能够读取并显示图像要好。
但是,从视图中,当我在编辑模式下打开保存的记录时在其中添加图像的地方,我看不到先前保存的图像。
所以在视图上我有以下代码:
<input type="file" asp-for="BAN_IMAGE_FILE">
在我的模特上 我有以下财产
public byte[] BAN_IMAGE {get;set;}
private IFormFile _BAN_IMAGE_FILE;
[NotMapped]
public IFormFile BAN_IMAGE_FILE
{
get => _BAN_IMAGE_FILE;
set
{
_BAN_IMAGE_FILE = value;
if (_BAN_IMAGE_FILE != null)
{
using (var ms = new MemoryStream())
{
_BAN_IMAGE_FILE.CopyTo(ms);
var fileBytes = ms.ToArray();
BAN_IMAGE = fileBytes;
}
}
}
}
因此您可以看到选择文件后我将执行的操作将其转换为字节数组,因此当我单击保存按钮时,数据将被保存。
我想做的是,当我单击“编辑”时,我想要获取字节数组并将其转换为FormFile,以便在屏幕上显示它,有什么建议吗?
控制器中的编辑方法:
public async Task<IActionResult> Edit(int? id)
{
if (User.Identity.IsAuthenticated != true)
return NotFound();
if (id == null)
{
return NotFound();
}
var tEvents = await _context.TEVENTS.Include(x => x.BANNERS).Include(x=>x.PHOTO_GALLERY).Include(x=>x.EVENT_TYPES)
.FirstOrDefaultAsync(x => x.TE_ROWID.Equals(id));
ViewBag.EvenTypes = GetEventTypes();
if (tEvents == null)
{
return NotFound();
}
return View(tEvents);
}
答案 0 :(得分:0)
首先,我建议您为IFormFile
类型使用viewmodel,就像它是用>>DOCUMENTATION<<编写的一样:
另一件事,我不知道保存了图像的视图文件的外观如何,但是要获得图像,您应该使用类似以下内容的图像:
@model YourViewModel
(...)
@if (item.AktualnosciImage != null)
{
//if the file exists in database
<div style="background-image: url(data:image;base64,@System.Convert.ToBase64String(item.YourViewModelsImageProperty))"></div>
}
@if (item.AktualnosciImage == null)
{
//if the file does not exists in database
<div style="background-image: url(/img/Aktualnosci/default.jpg)"></div>
}