Скачивание большого двоичного объекта с помощью JavaScript
В этой статье показано, как скачать большой двоичный объект с помощью клиентской библиотеки службы хранилища Azure для JavaScript. Данные больших двоичных объектов можно скачивать в различные места назначения, включая локальный путь к файлу, поток или текстовую строку.
Предварительные требования
- В примерах в этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Дополнительные сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье Начало работы с Хранилище BLOB-объектов Azure и JavaScript.
- Механизм авторизации должен иметь разрешения на выполнение операции скачивания. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:
Загрузка BLOB-объектов
Для скачивания большого двоичного объекта можно использовать любой из следующих способов:
- BlobClient.download
- BlobClient.downloadToBuffer (доступно только в среде выполнения Node.js)
- BlobClient.downloadToFile (доступно только в среде выполнения Node.js)
Загрузка по пути к файлу
В следующем примере выполняется скачивание большого двоичного объекта с помощью пути к файлу с помощью метода 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:
- Получение BLOB-объекта (REST API)
Примеры кода
Просмотрите примеры кода из этой статьи (GitHub):