Скачивание большого двоичного объекта с помощью JavaScript

В этой статье показано, как скачать большой двоичный объект с помощью клиентской библиотеки службы хранилища Azure для JavaScript. Данные больших двоичных объектов можно скачивать в различные места назначения, включая локальный путь к файлу, поток или текстовую строку.

Предварительные требования

  • В примерах в этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Дополнительные сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье Начало работы с Хранилище BLOB-объектов Azure и JavaScript.
  • Механизм авторизации должен иметь разрешения на выполнение операции скачивания. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:

Загрузка BLOB-объектов

Для скачивания большого двоичного объекта можно использовать любой из следующих способов:

Загрузка по пути к файлу

В следующем примере выполняется скачивание большого двоичного объекта с помощью пути к файлу с помощью метода BlobClient.downloadToFile . Этот метод доступен только в среде выполнения Node.js:

async function downloadBlobToFile(containerClient, blobName, fileNameWithPath) {

    const blobClient = containerClient.getBlobClient(blobName);
    
    await blobClient.downloadToFile(fileNameWithPath);
    console.log(`download of ${blobName} success`);
}

Загрузка в виде потока

В следующем примере выполняется загрузка BLOB-объекта путем создания объекта потока Node.js с возможностью записи и последующей передачи в этот поток с помощью метода BlobClient.download.

async function downloadBlobAsStream(containerClient, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
    console.log(`download of ${blobName} succeeded`);
}

Скачивание в строку

В следующем примере Node.js скачивает большой двоичный объект в строку с помощью метода BlobClient.download . В Node.js данные больших двоичных объектов возвращаются readableStreamBodyв .


async function downloadBlobToString(containerClient, blobName) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    const downloaded = await streamToBuffer(downloadResponse.readableStreamBody);
    console.log('Downloaded blob content:', downloaded.toString());
}

async function streamToBuffer(readableStream) {
    return new Promise((resolve, reject) => {
        const chunks = [];
        readableStream.on('data', (data) => {
            chunks.push(data instanceof Buffer ? data : Buffer.from(data));
        });
        readableStream.on('end', () => {
            resolve(Buffer.concat(chunks));
        });
        readableStream.on('error', reject);
    });
}

Если вы работаете с JavaScript в браузере, данные BLOB-объектов возвращаются в объекте promise blobBody. Дополнительные сведения см. в примере использования браузеров на сайте BlobClient.download.

Ресурсы

Дополнительные сведения о скачивании больших двоичных объектов с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript см. в следующих ресурсах.

Операции REST API

Пакет Azure SDK для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы клиентской библиотеки для скачивания больших двоичных объектов используют следующую операцию REST API:

Примеры кода

Просмотрите примеры кода из этой статьи (GitHub):

Ресурсы клиентской библиотеки