在ASP.Net Core中,返回文件的推荐方法是通过
PhysicalFileProvider
访问,这提供了额外的安全性,包括将所有路径限定在目录及其子目录中。目前我的整个应用程序都是异步的,我希望所有的方法都保持异步。public static string BASE_PATH = Path.GetTempPath();
public static string lastSavedFilePath = @"C:\Users\MyUser\AppData\Local\Temp\MyPicture.png"
[HttpGet("{id}")]
public async Task<FileResult> GetFileById(int id)
{
//provides access to the physical file system, scoping all paths to a directory and its children
IFileProvider provider = new PhysicalFileProvider(BASE_PATH);
var fileInfo = provider.GetFileInfo(lastSavedFilePath);
var fileStream = fileInfo.CreateReadStream();
this._contentTypeProvider.TryGetContentType(lastSavedFilePath, out var mimeType);
return File(fileStream, mimeType, "ProfilePicture.png");
}
编辑
原来通过PhysicalFileProvider
获得文件不是我想要的异步操作,我真正想要的是读取流的异步操作。
当调用我的文件操作时,如何确保它将异步读取我的流?
Task.Run
进行包装。 - Nkosi