Скачать или просмотреть файл из 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-объектам в вашей учетной записи, вы не должны передавать кому-либо свой ключ учетной записи. Однако, как владелец учетной записи, вы можете получить доступ к своим большим двоичным объектам из своего приложения, используя аутентификацию с помощью ключа учетной записи (также известного как аутентификация с общим ключом).