Я пытаюсь загрузить большой видеофайл.Я использую хранилище Azure Storage.При чтении документации есть предупреждение об использовании IFormFile на https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.1. Это говорит о том, что я передаю свои данные.Следующий код, создающий там буфер, приведет к сбою моего сервера или к потоковой передаче непосредственно в хранилище?
Из представления
<form asp-action="Create" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Description" class="control-label"></label>
<input asp-for="Description" class="form-control" />
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group">
<input asp-for="VideoAsFile" class="form-control" />
<span asp-validation-for="VideoAsFile" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</form>
С контроллера
public async Task<IActionResult> Create([Bind(" Name,Description,VideoAsFile")] VideoWithFileViewModel video)
{
if (ModelState.IsValid)
{
string imageId;
using (var stream = video.VideoAsFile.OpenReadStream())
{
imageId = videoServices.SaveVideo(stream);
}
var newVideo = new Video()
{
Name = video.Name,
Description = video.Description,
URL = imageId
};
repository.AddVideo(newVideo, User);
repository.SaveAll();
return RedirectToAction(nameof(Index));
}
Из Видеоуслуг
public string SaveVideo(Stream videoStream)
{
CloudBlobClient blobClient=new CloudBlobClient(new Uri(baseUri), credentials);
var imageId = Guid.NewGuid().ToString();
var container = blobClient.GetContainerReference("videos");
var blob = container.GetBlockBlobReference(imageId);
blob.UploadFromStreamAsync(videoStream);
return imageId;
}