我有一个.net 6应用程序,它可以在启动时从不同的zip文件中读取文件,并将它们转换为Resources
列表:
public class Resource
{
public string? Id { get; set; }
public string? MimeType { get; set; }
public byte[] Data { get; set; } = Array.Empty<byte>();
}
目前,我只是将它们保存在内存中的字典中,并从控制器提供服务:
[HttpGet("{id}")]
public IActionResult GetResource(string id)
{
var resource = _resourceRepository.Get(id);
return File(resource.Data, resource.MimeType!);
}
我想在net框架中加入静态文件管理,但最好保留控制器,以便客户端可以使用GET resource/id
获得资源。
我尝试使用app.UseStaticFiles
,将RequestPath
设置为“resource”,存储没有扩展名的文件,并设置ServeUnknownFileTypes = true
,这样可以工作,我更喜欢保留扩展名,以便能够手动浏览文件夹并保留内容类型标题。
有没有办法通过控制器来管理这个?
1条答案
按热度按时间yhuiod9q1#
我想您已经知道配置静态文件中间件是必要的,
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-7.0
但是您可能没有注意到,您可以编写自己的文件提供程序(而不是默认的
PhysicalFileProvider
),https://learn.microsoft.com/en-us/aspnet/core/fundamentals/file-providers?view=aspnetcore-7.0
微软发布了一个
ManifestEmbeddedFileProvider
的例子,但它可能不会以你喜欢的方式工作,所以你最好创建自己的。