如何在 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[] 的图像的方法应该可以正常工作。