Blob представляет собой неизменяемый объект для работы с бинарными данными, который:
const { Blob } = require('node:buffer');
// Создание Blob из текста
const textBlob = new Blob(['Hello, Node.js!'], { type: 'text/plain' });
// Создание Blob из бинарных данных
const binaryBlob = new Blob([new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f])]);
slice()
- создает новый Blob, содержащий часть данныхarrayBuffer()
- возвращает Promise с ArrayBuffertext()
- возвращает Promise с текстовым содержимымstream()
- возвращает ReadableStreamFile наследуется от Blob и добавляет:
const { File } = require('node:buffer');
const file = new File(
['File content'],
'example.txt',
{
type: 'text/plain',
lastModified: Date.now()
}
);
const blob = new Blob(['{"data": "example"}'], { type: 'application/json' });
fetch('https://api.example.com', {
method: 'POST',
body: blob
});
// Создание файла для тестирования
const testFile = new File(['test content'], 'test.txt');
// Эмуляция загрузки файла
formData.append('file', testFile, 'test.txt');
async function processBlob(blob) {
const stream = blob.stream();
for await (const chunk of stream) {
console.log('Received chunk:', chunk);
}
}
const blob = new Blob(['Node.js']);
blob.arrayBuffer()
.then(buf => Buffer.from(buf))
.then(buffer => console.log(buffer.toString()));
const { Blob } = require('node:buffer');
const { writeFile } = require('node:fs/promises');
const blob = new Blob(['File content']);
blob.arrayBuffer()
.then(buf => writeFile('output.txt', Buffer.from(buf)));
Характеристика | AsyncResource | AsyncLocalStorage |
---|---|---|
Уровень контроля | Низкоуровневый | Высокоуровневый |
Сложность | Выше | Проще |
Использование | Для библиотек | Для прикладного кода |
Производительность | Более затратен | Оптимизирован |
Классы Blob и File в Node.js предоставляют Web-совместимый API для работы с бинарными данными, особенно полезный при:
Хотя Buffer остается основным инструментом для работы с бинарными данными в Node.js, Blob и File незаменимы для сценариев, требующих совместимости с веб-стандартами.