#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();