Atualmente, estou criando uma API no ASP.NET Core 3 como meu primeiro projeto com o .NET Core.
No momento, estou tentando enviar um vídeo para o frontend do React.js para assisti-lo no navegador. O upload de arquivos e vídeos funciona sem problemas e o método que você vê abaixo também já envia um arquivo para o cliente, mas se o vídeo demorar mais de alguns segundos, o player de vídeo será muito lento e demorará muito tempo para ser ignorado. alguns segundos do vídeo. Eu acho que é porque o arquivo é primeiro completamente baixado e depois reproduzido.
[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;
}
Acho que a maneira de resolver meu problema é transmitir o arquivo e não enviá-lo como um todo. Eu já pesquisei no Google como transmitir vídeos com o ASP.NET Core 3, mas só encontro sites explicando o ASP.NET Core 2 (por exemplo, http://anthonygiretti.com/2018/01/16/streaming-video-asynchronously -in-asp-net-core-2-com-web-api / )
Eu já tentei usar o código nesses sites, mas a maneira como eles o fizeram não é compatível com o ASP.NET Core 3.
Como posso transmitir arquivos no ASP.NET Core 3?