如何在 Razor Pages 中加载 image/byte 数组
How do I load an image/byte array in Razor Pages
我正在尝试让页面使用@Url.Page 从数据库加载图像。我可以看到它命中了 PageModel 处理程序方法,但图像永远不可见。
我发现的所有内容都与使用 MVC 的 Razor 视图有关。我专门使用 Razor Pages,没有控制器,只有页面模型。
页数:
<div class="row" style="@(Model.ImageFileId.HasValue ? "" : "display: none;")">
<div class="form-group col-1">
<label>Existing Image: </label>
</div>
<div class="col-11">
<img src="@Url.Page("Edit", "FilePreview", new { imageFileId = Model.ImageFileId })" />
</div>
</div>
页面处理方法:
public async Task<IActionResult> OnGetFilePreview(int imageFileId)
{
// Get Image File from database
File imageFile = await _fileService.GetFileById(imageFileId);
return File(imageFile.FileContent, imageFile.MimeType, imageFile.FileName);
}
我用我的项目测试过,它可以工作,你需要确保你返回的文件是 correct.Here 是一个演示:
查看:
<img src="@Url.Page("Index5", "FilePreview", new { imageFileId = 1 })" />
处理程序(我在 wwwroot 中测试了一个文件):
public async Task<IActionResult> OnGetFilePreview(int imageFileId)
{
string path = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\imgs.jpg");
byte[] bytes = System.IO.File.ReadAllBytes(path);
return File(bytes, "application/octet-stream", "1.jpg");
}
结果:
所以事实证明我写的代码没问题,我保存在数据库中并因此返回的数据不是字节数组,而是 Base64 string.If 有人无意中发现了这个问题,我用来显示数据库中保存为 byte[] 的图像的方法应该可以正常工作。
我正在尝试让页面使用@Url.Page 从数据库加载图像。我可以看到它命中了 PageModel 处理程序方法,但图像永远不可见。
我发现的所有内容都与使用 MVC 的 Razor 视图有关。我专门使用 Razor Pages,没有控制器,只有页面模型。
页数:
<div class="row" style="@(Model.ImageFileId.HasValue ? "" : "display: none;")">
<div class="form-group col-1">
<label>Existing Image: </label>
</div>
<div class="col-11">
<img src="@Url.Page("Edit", "FilePreview", new { imageFileId = Model.ImageFileId })" />
</div>
</div>
页面处理方法:
public async Task<IActionResult> OnGetFilePreview(int imageFileId)
{
// Get Image File from database
File imageFile = await _fileService.GetFileById(imageFileId);
return File(imageFile.FileContent, imageFile.MimeType, imageFile.FileName);
}
我用我的项目测试过,它可以工作,你需要确保你返回的文件是 correct.Here 是一个演示:
查看:
<img src="@Url.Page("Index5", "FilePreview", new { imageFileId = 1 })" />
处理程序(我在 wwwroot 中测试了一个文件):
public async Task<IActionResult> OnGetFilePreview(int imageFileId)
{
string path = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\imgs.jpg");
byte[] bytes = System.IO.File.ReadAllBytes(path);
return File(bytes, "application/octet-stream", "1.jpg");
}
结果:
所以事实证明我写的代码没问题,我保存在数据库中并因此返回的数据不是字节数组,而是 Base64 string.If 有人无意中发现了这个问题,我用来显示数据库中保存为 byte[] 的图像的方法应该可以正常工作。