.net core ImageSharp如何使用Asp.NETMVC控制器
ImageSharp如何处理从数据库加载的动态图像? 这里是获取图像文件的控制器:.net core ImageSharp如何使用Asp.NETMVC控制器,.net-core,imagesharp,.net Core,Imagesharp,ImageSharp如何处理从数据库加载的动态图像? 这里是获取图像文件的控制器: public async Task<FileResult> GetPhoto([FromQuery] GetFileAttachementInputAsync input) { var file = await filesAttachementAppService .GetFileAsync(new GetFileAttachementInputAsyn
public async Task<FileResult> GetPhoto([FromQuery] GetFileAttachementInputAsync input)
{
var file = await filesAttachementAppService
.GetFileAsync(new GetFileAttachementInputAsync() { FileId = input.FileId })
.ConfigureAwait(false);
return file != null
? File(new MemoryStream(file.FileDto.FileContent), file.FileDto.ContentType, file.FileDto.FileName)
: null;
}
我在这里错过了什么让这一切顺利
您没有使用中间件,也没有使用向中间件提供映像的服务 为了让中间件工作,它需要能够捕获映像请求。在默认安装中,这是通过将请求与wwwroot中物理文件系统中的映像源相匹配来完成的 在您的代码中,虽然您已经创建了一个独立的操作结果,返回一个包含您的映像的流,但中间件没有意识到 免责声明,以下内容基于最新的开发者版本1.0.0-dev000131,虽然不太可能更改,但在最终发布之前可能会更改 为了从自定义源提供图像,您需要创建自己的实现,并且可以使用源中的示例作为实现的基础 一旦实现,您将需要通过依赖项注入来注册实现。这需要使用更细粒度的注册,因为您不再使用默认值
//细粒度控件添加默认选项并配置所有其他服务。需要设置所有服务。
services.AddImageSharpCore()
.SetRequestParser()
.SetBufferManager()
.SetMemoryLocatorFromMiddleWareOptions()
.SetCacheHash()文件
.AddProvider()
///通过AddProvider()在此处添加您的提供程序。
.AddProvider()
.AddProcessor()
.AddProcessor()
.AddProcessor();
然后,您应该能够完全删除操作结果,并使用IImageProvider
和IImageResolver
组合来识别请求并返回图像
<img src="/PropertyAdministration/GetPhoto?FileId=@item.MainPhotoId&width=554&height=360" alt="" />
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddImageSharp();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
app.UseImageSharp();
}