Как загрузить виртуальный каталог в хранилище больших двоичных объектов с помощью angular

#azure #azure-blob-storage

Вопрос:

Поскольку мы знаем, что у нас все еще нет поддержки загрузки виртуального каталога в хранилище больших двоичных объектов, можем ли мы загружать большие двоичные объекты один за другим и как-то их архивировать? Возможно ли это? Каталог/подкаталог загрузки очень важен для моего приложения, я просто ищу решение, если мы можем каким-то образом заставить каталог/подкаталог загрузки работать.

Комментарии:

1. Не совсем уверен, о чем вы конкретно спрашиваете, но… хранилище больших двоичных объектов по своей конструкции не является файловой системой и не поддерживает объединение больших двоичных объектов в zip для загрузки. Для этого вам нужно будет сделать это самостоятельно (возможно, загрузить определенные большие двоичные объекты в виртуальную машину или функцию Azure или в любое другое место, где запущено ваше приложение, а затем выполнить любые необходимые манипуляции с файлами, такие как объединение с помощью zip). В качестве альтернативы вы можете использовать файлы Azure вместо хранилища больших двоичных объектов, которое затем предоставляет вам поддержку каталогов через SMB.

Ответ №1:

Я протестировал в своей среде

Я создал виртуальный каталог в своем хранилище больших двоичных объектов и добавил файлы больших двоичных объектов.

В моем локальном компьютере я создал папку с именем виртуального каталога в той же папке, где существует мой файл .js.

Я использовал приведенный ниже код, чтобы загрузить весь виртуальный каталог в свой локальный:

 async function main() {  var fs = require('fs');  const { BlobServiceClient, StorageSharedKeyCredential } = require("@azure/storage-blob");  const account = "storage-account-name";  const accountKey = "storage-account-key"  const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);  const blobServiceClient = new BlobServiceClient(  `https://${account}.blob.core.windows.net`,  sharedKeyCredential  );  const containerClient = blobServiceClient.getContainerClient("container-name");  let iter = containerClient.listBlobsByHierarchy("/", { prefix: "virtual-direcotry/" });  for await (const item of iter) {  const blobClient = containerClient.getBlobClient(`${item.name}`);  const response = await blobClient.downloadToFile(`${item.name}`);  } } main();  

введите описание изображения здесь

введите описание изображения здесь