【发布时间】:2019-09-29 06:45:54
【问题描述】:
我正在开发一个 ASP.NET Core API。 API 是数据库驱动的。
我将图像存储在数据库中,我的ArtistImage.cs 实体如下所示:
ArtistImage.cs
public class ArtistImage
{
public int Id { get; set; }
public byte[] Data { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? ModifiedAt { get; set; }
public int ArtistId { get; set; }
public Artist Artist { get; set; }
}
如何将byte[] 转换为类似return File("~/Images/photo.jpg", "image/jpeg"); 的内容,这样只会提供图像?
我想避免先将字节数组写入本地系统文件。
我的尝试
我试过下面的方法,但显然我不能像那样使用File。
public class ImagesService : IImagesService
{
private readonly DbContext context;
public ImagesService(DbContext context)
{
this.context = context;
}
public async Task<FileResult> GetArtistImageAsync(int imageId)
{
byte[] imageBytes = await context
.ArtistImages
.Where(ai => ai.Id == imageId)
.Select(ai => ai.Data)
.SingleOrDefaultAsync();
return System.IO.File(imageBytes, "image/jpg", "test");
}
}
【问题讨论】:
-
也许你的方法返回
Task<IActionResult>?
标签: c# asp.net-core