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

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

Необходимые компоненты

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

Скачивание большого двоичного объекта

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

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

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

async function downloadBlobToFile(containerClient, blobName, localFilePath) {

    const blobClient = containerClient.getBlobClient(blobName);
    
    await blobClient.downloadToFile(localFilePath);
}

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

В следующем примере выполняется загрузка 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);
}

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

В следующем примере Node.js скачивает большой двоичный объект в строку с методом BlobClient.download . В Node.js данные BLOB-объектов возвращаются в 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());
}

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, см. в следующих ресурсах.

Примеры кода

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

Операции REST API

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

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

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для JavaScript/Typescript. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения JavaScript/Typescript.