Как обслуживать видеофайл/поток из минимального API ASP Net Core 6
Я пытался добиться этого, следуя различным учебникам, но не преуспел. Как мне обработать запрос диапазона http в минимальном API для обслуживания видеопотока?
У меня есть этот минимальный код настройки для API с одним сопоставленным путем GET "/video". Я также создал папку «wwwroot» внутри папки проекта. Я поместил туда видеофайл mp4 с именем «test.mp4». Может ли кто-нибудь знающий написать простой пример того, как передать этот файл внутри моего сопоставленного маршрута?
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
builder.Logging.AddJsonConsole();
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.MapGet("/video", () =>
{
});
1 ответ
Вы можете использоватьResults.Stream()
метод для возврата потока из минимального API.
string wwwroot = builder.Environment.WebRootPath;
...
app.MapGet("/video", () =>
{
string filePath = Path.Combine(wwwroot, "test.mp4");
return Results.Stream(new FileStream(filePath, FileMode.Open));
});
Параметр потока удаляется после отправки ответа.
Results.Stream
принимает несколько других необязательных параметров, таких как
fileDownloadName
, а также
contentType
(что по умолчанию
"application/octet-stream"
), которые могут быть вам полезны. Установлен
enableRangeProcessing: true
чтобы включить запросы диапазона .
Вышеизложенное может быть легко адаптировано для
filename
как параметр, если хотите. Вам нужно будет рассмотреть возможность проверки (в равной степени относится к текущему коду TBH). Проверено и работает для меня.