我目前正在使用.NET Core构建API,这是我的第一个.NET Core项目。
我目前正在尝试将视频发送到我的React.js前端以在浏览器中观看。上传文件和视频没有任何问题,下面所见的方法已经将文件发送到客户端,但如果视频长度超过几秒钟,视频播放器会变得非常缓慢,并且跳过几秒钟的视频时间也需要很长时间。我认为这是因为文件首先完全下载然后再播放的原因。
[Route("getFileById")]
public FileResult getFileById(int fileId)
{
var context = new DbContext();
var file = context.File.Find(fileId);
if (file == null)
{
Console.WriteLine("file " + fileId + " not found");
return null;
}
var content = new FileStream(file.Name, FileMode.Open, FileAccess.Read, FileShare.Read);
var response = File(content, "application/octet-stream");
return response;
}
我认为解决我的问题的方法是将文件流化,而不是作为整个文件发送。我已经在谷歌上搜索了如何使用ASP.NET Core 3流媒体视频,但我只找到了针对ASP.NET Core 2的网站(例如http://anthonygiretti.com/2018/01/16/streaming-video-asynchronously-in-asp-net-core-2-with-web-api/)。我已经尝试过在这些网站上使用的代码,但他们的方式不兼容ASP.NET Core 3。如何在ASP.NET Core 3中流式传输文件?