Ich erstelle derzeit eine API in ASP.NET Core 3 als mein erstes Projekt mit .NET Core.
Ich versuche gerade, ein Video an mein React.js-Frontend zu senden, um es im Browser anzusehen. Das Hochladen von Dateien und Videos funktioniert problemlos und die unten gezeigte Methode sendet bereits eine Datei an den Client. Wenn das Video jedoch länger als einige Sekunden ist, ist der Videoplayer sehr langsam und das Überspringen dauert ebenfalls lange ein paar Sekunden des Videos. Ich denke, das liegt daran, dass die Datei zuerst vollständig heruntergeladen und dann abgespielt wird.
[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;
}
Ich denke, der Weg, um mein Problem zu lösen, besteht darin, die Datei zu streamen und nicht als Ganzes zu senden. Ich habe bereits gegoogelt, wie Videos mit ASP.NET Core 3 gestreamt werden, aber ich finde nur Websites, die dies für ASP.NET Core 2 erklären (z. B. http://anthonygiretti.com/2018/01/16/streaming-video-asynchronously) -in-asp-net-core-2-with-web-api / )
Ich habe bereits versucht, den Code auf diesen Websites zu verwenden, aber die Art und Weise, wie sie es getan haben, ist nicht mit ASP.NET Core 3 kompatibel.
Wie kann ich Dateien in ASP.NET Core 3 streamen?