Я пытаюсь передать видео, сохраненное в виде вложения в Ravendb-Database, через действие ASP.NET MVC 5 в WebBrowser. Он работает со следующим кодом, но видео полностью загружается до его запуска. Я не понимаю, что я делаю неправильно.
Я нашел несколько способов сделать Streaming в MVC, но они, похоже, ожидают Seekable Stream - но поток, который я получаю от Ravendb, не доступен для поиска; это даже не обеспечивает длину. Таким образом, единственный способ сделать это - скопировать поток ravendb в поток памяти и предоставить PartialContent или аналогичный оттуда.
У кого-нибудь есть лучшее решение? Я не могу быть единственным, кто хочет передавать видео из базы данных без загрузки всего видео в память перед его отправкой.
Я получаю вложение от ravendb, как это:
public async Task<System.IO.Stream> GetAttachmentAsync(IAttachmentPossible attachedObject, string key)
{
using (var ds = InitDatabase())
{
using (var session = ds.OpenAsyncSession())
{
try
{
var result = await session.Advanced.Attachments.GetAsync(attachedObject.Id, key);
return result.Stream;
}
catch (Exception ex)
{
return null;
}
}
}
}
После этого я отправляю поток в браузер так:
var file = await _database.GetAttachmentAsync(entry, attachmentId);
HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.OK);
msg.Content = new StreamContent(file);
msg.Content.Headers.ContentType = new MediaTypeHeaderValue("video/mp4");
return msg;
Есть идеи? Большое спасибо!