如何在ASP.NET中用MSSMS中的字节数组覆盖.jpg



我尝试过使用System.Drawing中的内容,但它在ASP.NET中不可用。我尝试过File.Copy(),但也不可用。感谢您的帮助。

这是相关的代码


var fileDetailExpanded = await _context.FileDetails.SingleOrDefaultAsync(m => m.FileDetailID == id);
if (fileDetailExpanded == null)
{
return NotFound();
}
byte[] fileBytes = fileDetailExpanded.File;
string fileExt = fileDetailExpanded.FileType;
/* src = "~/images/displayImage.jpg */

因此,通常在ASP.NET Core MVC中,我们会创建一个专用的操作方法,它的唯一工作就是返回图像。

public ActionResult ProductImage(int id)
{
var fileInfo = //get this object from the database based on the id, looks like you already know how
return File(fileInfo.TheByteArray, fileInfo.MimeType);
}

在上面的代码中,我假设您有一个名为fileInfo的对象,它包含表示图像的字节数组和图像的MIME类型(如果您只有文件扩展名,则可以实现一个从扩展名转换为MIME类型的方法(。您可能会有不同的属性名称,请相应地调整代码。此操作方法将直接将图像写入响应,并将MIME类型作为内容类型传递。

通过点击此图片URL,您应该能够在浏览器中看到图片。然后剩下的唯一步骤是将Razor页面中的图像元素设置为指向该位置。我假设您的模型具有FileId属性,该属性表示您希望用户看到的文件。

<img src="/MyController/ProductImage/@Model.FileId" />

请注意,从服务器获取图像并在每次访问此页面时返回图像可能不是非常高效,因此您可能会考虑各种缓存选项。

最新更新