رمزگذار فایل به Base64
رمزگذاری هر فایلی به Base64: PDF، ZIP، تصاویر و بیشتر
هر فایلی را اینجا رها کنید یا برای آپلود کلیک کنید
هر نوع فایل: PDF، ZIP، تصاویر، فایلهای باینری
رمزگذاری فایل به Base64 چیست؟
رمزگذاری فایل به Base64 فایلهای باینری — PDF، ZIP، تصاویر، فایلهای اجرایی، فونتها، صدا — را با استفاده از الفبای تعریفشده در RFC 4648 به متن ASCII تبدیل میکند. هر سه بایت از ورودی باینری به چهار کاراکتر Base64 تبدیل میشود و یک نمایش متنی ایجاد میکند که میتواند از طریق کانالهایی که صرفاً برای متن طراحی شدهاند منتقل شود: بارهای JSON API، اسناد XML، متن ایمیل، ویژگیهای HTML و متغیرهای محیطی.
بر خلاف رمزگذاری متن به Base64 (که روی رشتهها عمل میکند)، رمزگذاری فایل به Base64 جریان خام بایتهای هر فایل را صرفنظر از فرمت آن میخواند. هدرهای باینری PDF، بلوکهای فشرده ZIP، و دادههای پیکسل PNG همگی یکسان در نظر گرفته میشوند: به عنوان دنبالهای از اکتتها برای رمزگذاری مجدد. نتیجه همیشه ASCII معتبر است و میتوان آن را در هر جایی که کاراکترهای قابل چاپ را میپذیرد جاسازی کرد.
مبادله در اندازه است: خروجی Base64 تقریباً ۳۳٪ بزرگتر از باینری اصلی است. برای یک PDF به حجم ۱ مگابایت، این به معنای تقریباً ۱.۳۳ مگابایت متن Base64 است. این سربار هزینه نمایش بایتهای ۸ بیتی با کاراکترهای ۶ بیتی است و ذاتی رمزگذاری است — هیچ پیادهسازی نمیتواند از آن اجتناب کند. با این حال، رمزگذاری فایل به Base64 روش استاندارد جاسازی دادههای باینری در فرمتهای تنها متن باقی میماند، که در MIME (RFC 2045)، data URIها (RFC 2397) و JSON Web Tokenها (RFC 7519) مشخص شده است.
چرا از این رمزگذار فایل Base64 استفاده کنیم؟
این ابزار فایلها را مستقیماً در مرورگر شما با استفاده از FileReader API به Base64 رمزگذاری میکند. هیچ فایلی به سرور ارسال نمیشود — کل تبدیل در سمت کاربر در JavaScript انجام میشود.
موارد استفاده از رمزگذاری فایل به Base64
سربار اندازه فایل Base64
رمزگذاری Base64 اندازه داده را دقیقاً یک سوم افزایش میدهد. هر ۳ بایت ورودی ۴ کاراکتر خروجی تولید میکند (هر کدام ۶ بیت را نمایش میدهد). کاراکترهای padding (=) هنگامی که طول ورودی مضربی از ۳ نیست اضافه میشوند. جدول زیر رابطه بین اندازه فایل اصلی و اندازه خروجی رمزگذاریشده را نشان میدهد.
| اندازه فایل | بایتهای خام | بایتهای Base64 | سربار |
|---|---|---|---|
| 1 KB | 1,024 B | 1,368 B | +33.3% |
| 10 KB | 10,240 B | 13,656 B | +33.4% |
| 100 KB | 102,400 B | 136,536 B | +33.3% |
| 1 MB | 1,048,576 B | 1,398,104 B | +33.3% |
| 5 MB | 5,242,880 B | 6,990,508 B | +33.3% |
| 10 MB | 10,485,760 B | 13,981,016 B | +33.3% |
مرجع Data URI و نوع MIME
یک data URI محتوای فایل را مستقیماً در HTML، CSS، یا JavaScript با استفاده از فرمت data:[MIME type];base64,[encoded data] جاسازی میکند. نوع MIME به مرورگر میگوید که چگونه بایتهای رمزگشاییشده را تفسیر کند. در زیر پسوندهای فایل رایج، نوع MIME آنها، و پیشوند data URI مربوطه آمده است.
| پسوند | نوع MIME | پیشوند Data URI |
|---|---|---|
| application/pdf | data:application/pdf;base64,... | |
| .zip | application/zip | data:application/zip;base64,... |
| .png | image/png | data:image/png;base64,... |
| .jpg | image/jpeg | data:image/jpeg;base64,... |
| .gif | image/gif | data:image/gif;base64,... |
| .svg | image/svg+xml | data:image/svg+xml;base64,... |
| .woff2 | font/woff2 | data:font/woff2;base64,... |
| .mp3 | audio/mpeg | data:audio/mpeg;base64,... |
| .wasm | application/wasm | data:application/wasm;base64,... |
| .bin | application/octet-stream | data:application/octet-stream;base64,... |
نمونههای کد
این نمونههای قابل اجرا نحوه خواندن یک فایل باینری و رمزگذاری آن به Base64 در JavaScript، Python، Node.js، bash، و Go را نشان میدهند. هر قطعه کد Base64 استاندارد (RFC 4648 بخش ۴) با padding تولید میکند.
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
const file = e.target.files[0]
const reader = new FileReader()
reader.onload = () => {
const base64 = reader.result.split(',')[1]
console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
}
reader.readAsDataURL(file)
})
// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
const buffer = await blob.arrayBuffer()
const bytes = new Uint8Array(buffer)
let binary = ''
bytes.forEach(b => binary += String.fromCharCode(b))
return btoa(binary) // → standard Base64 string
}import base64
from pathlib import Path
# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40]) # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."
# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)
# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60]) # → "data:application/pdf;base64,JVBERi0xLj..."import { readFileSync, writeFileSync } from 'fs'
// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)
// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)
// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`# Encode a file to Base64 (macOS / Linux) base64 < document.pdf > document.b64.txt # Encode with no line wrapping (GNU coreutils) base64 -w 0 < document.pdf > document.b64.txt # Encode and copy to clipboard (macOS) base64 < image.png | pbcopy # Encode with OpenSSL (available everywhere) openssl base64 -in archive.zip -out archive.b64.txt # Pipe directly into curl for API upload base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
package main
import (
"encoding/base64"
"fmt"
"os"
)
func main() {
data, err := os.ReadFile("document.pdf")
if err != nil {
panic(err)
}
encoded := base64.StdEncoding.EncodeToString(data)
fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)
// Write to file
os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}