Скачать или просмотреть файл из BLOB-объекта Azure в пользовательском интерфейсе Aurelia

Мои файлы хранятся в Azure. Я хочу скачать или просмотреть механизм файла на стороне клиента. Как это:

Azure -> Api -> Клиентский интерфейс (Aurelia)

Я видел много примеров C#, но я не уверен, как получить файл на стороне пользовательского интерфейса. Может кто-нибудь, пожалуйста, помогите!

Спасибо!

Редактировать:

Код API:

public string getUtf8Text()
{
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    var containerName = "myContainer";
    var blobName = "myBlobName.pdf";                
    CloudBlobContainer container = blobClient.GetContainerReference(containerName);
    CloudBlockBlob blockBlob  = container.GetBlockBlobReference(blobName);

     string text;
     using (var memoryStream = new MemoryStream())
     {
        await blockBlob.DownloadToStreamAsync(memoryStream);
        text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
        return text;
     }
}

Попытка загрузить файл из строки байтов utf8. Код на стороне клиента:

var byteCharacters =result.byteArray;
var byteNumbers = new Array(result.byteArray.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var octetStreamMime = "application/octet-stream";
var contentType = octetStreamMime;
var blob = new Blob([byteArray] {type: contentType});
FileSaver.saveAs(blob, result.blobName);

иногда это работает для PDF, в остальное время это просто пустые страницы. Висит навсегда для mp4. Есть идеи, что здесь происходит?

1 ответ

Каждый BLOB-объект имеет уникальный URL-адрес. Вы можете использовать это для отображения содержимого большого двоичного объекта через клиент, который может обрабатывать URL.

URL-адрес блоба будет похож на:

https://myaccount.blob.core.windows.net/mycontainer/myblob

См. Имена и ссылки на контейнеры, BLOB-объекты и метаданные для получения дополнительной информации.

Большая проблема заключается в том, как вы аутентифицируете доступ к BLOB-объектам для своих пользователей. У вас есть несколько вариантов:

  • Вы можете сделать большие двоичные объекты в контейнере общедоступными и, таким образом, доступными для анонимного доступа без аутентификации. Это означает, что все BLOB-объекты в этом контейнере будут общедоступными. См. Управление анонимным доступом для чтения к контейнерам и BLOB-объектам.
  • Вы можете использовать подпись общего доступа, чтобы делегировать доступ к BLOB-объектам в контейнере с указанными вами разрешениями и в течение указанного вами интервала времени. Это дает вам большую степень контроля, чем анонимный доступ, но также требует больше усилий для разработки. См. Общие подписи доступа, Часть 1: Понимание модели SAS.

Обратите внимание, что хотя любой пользователь, обладающий вашим ключом учетной записи, может проходить проверку подлинности и получать доступ к BLOB-объектам в вашей учетной записи, вы не должны передавать кому-либо свой ключ учетной записи. Однако, как владелец учетной записи, вы можете получить доступ к своим большим двоичным объектам из своего приложения, используя аутентификацию с помощью ключа учетной записи (также известного как аутентификация с общим ключом).

Другие вопросы по тегам