import { Meta, Source } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/functional-basic/Functions/blobToBase64 - Chuyển đổi Blob thành Base64'/>

# `blobToBase64`

Chuyển đổi bất đồng bộ các đối tượng `Blob` hoặc `File` thành chuỗi định dạng Base64 (Data URL).

**Tham số:**
- `blob: Blob` — Đối tượng `Blob` (hoặc `File`) cần chuyển đổi.
- `clean: boolean = false` — Nếu `true`, loại bỏ tiền tố Data URL (ví dụ: `data:image/png;base64,`).

**Môi trường thực thi:**
Tiện ích tự động xác định phương pháp chuyển đổi khả dụng:
- **Trình duyệt**: Sử dụng `FileReader` để đọc nội dung.
- **Máy chủ (SSR)**: Sử dụng `Buffer` và phương thức bất đồng bộ `blob.arrayBuffer()`.

**Trả về:**
`Promise<string | undefined>` — Chuỗi Base64 hoặc `undefined` nếu không thể chuyển đổi.

## Ví dụ

<Source
  language='typescript'
  code={`
import { blobToBase64 } from '@dxtmisha/functional-basic'

// 1. Mặc định (trả về Data URL)
const dataUrl = await blobToBase64(file)
// 'data:image/png;base64,iVBORw0KGgo...'

// 2. Base64 thô (không có tiền tố)
const rawBase64 = await blobToBase64(file, true)
// 'iVBORw0KGgo...'

// 3. Xử lý trường hợp API không khả dụng
const result = await blobToBase64(blob)
if (result) {
  // làm việc với chuỗi
}
  `}
/>
