【发布时间】:2020-04-22 21:18:09
【问题描述】:
我目前正在 ASP.NET Core 3 中构建一个 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 中流式传输文件?
【问题讨论】:
-
如果没有必要在应用程序中传输和存储这些视频文件,您可以使用一些云解决方案,如 Azure Blob 存储或 Azure 媒体服务(如果您需要一些特定的媒体/流媒体功能) .使用 Azure Blob,您可以快速上传/下载文件,而不会增加应用程序的开销。
标签: c# .net asp.net-mvc asp.net-core streaming