Como definir a disposição do conteúdo em solicitações de blobs azuis individuais?
Eu tenho um aplicativo que hospeda vídeos e recentemente migramos para o Azure.
Em nosso aplicativo antigo, permitimos aos usuários reproduzir ou baixar o vídeo. No entanto, no Azure, parece que eu tenho que escolher entre qual funcionalidade eu quero, pois a disposição do conteúdo deve ser definida no arquivo e não na solicitação.
Até agora, encontrei duas soluções muito ruins.
A primeira solução é transmitir o download através do meu servidor MVC.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("videos");
string userFileName = service.FirstName + service.LastName + "Video.mp4";
Response.AddHeader("Content-Disposition", "attachment; filename=" + userFileName); // force download
container.GetBlobReference(service.Video.ConvertedFilePath).DownloadToStream(Response.OutputStream);
return new EmptyResult();
Essa opção funciona bem para vídeos menores, mas é muito desgastante no meu servidor. Para vídeos maiores, a operação expira.
A segunda opção é hospedar todos os vídeos duas vezes.
Essa opção é obviamente ruim, pois terei que pagar o dobro do custo de armazenamento.