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