เครื่องมือเข้ารหัสไฟล์ Base64
เข้ารหัสไฟล์ใดก็ได้เป็น Base64: PDF, ZIP, รูปภาพ และอื่นๆ
วางไฟล์ใดก็ได้ที่นี่หรือคลิกเพื่ออัปโหลด
ทุกประเภทไฟล์: PDF, ZIP, รูปภาพ, ไฟล์ไบนารี
การเข้ารหัสไฟล์เป็น Base64 คืออะไร?
การเข้ารหัสไฟล์เป็น Base64 แปลงไฟล์ไบนารี — PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ, ฟอนต์, ไฟล์เสียง — ให้เป็นข้อความ ASCII ธรรมดาโดยใช้ชุดอักขระที่กำหนดในมาตรฐาน RFC 4648 ทุกสามไบต์ของข้อมูลไบนารีจะกลายเป็นอักขระ Base64 สี่ตัว สร้างการแสดงข้อมูลแบบข้อความที่ส่งผ่านช่องทางที่ออกแบบมาสำหรับข้อความเท่านั้น ได้แก่ เพย์โหลด JSON API, เอกสาร XML, เนื้อหาอีเมล, แอตทริบิวต์ HTML และตัวแปรสภาพแวดล้อม
ต่างจากการเข้ารหัสข้อความเป็น Base64 (ซึ่งทำงานกับสตริง) การเข้ารหัสไฟล์เป็น Base64 จะอ่านกระแสไบต์ดิบของไฟล์โดยไม่คำนึงถึงรูปแบบ ส่วนหัวไบนารีของ PDF, บล็อกบีบอัดของ ZIP และข้อมูลพิกเซลของ PNG ล้วนได้รับการจัดการเหมือนกัน: เป็นลำดับของออคเตตที่จะเข้ารหัสใหม่ ผลลัพธ์จะเป็น ASCII ที่ถูกต้องเสมอ ปลอดภัยสำหรับการฝังในที่ใดก็ตามที่รับอักขระที่พิมพ์ได้
ข้อแลกเปลี่ยนคือขนาด: ผลลัพธ์ Base64 มีขนาดใหญ่กว่าไฟล์ต้นฉบับประมาณ 33% สำหรับ PDF ขนาด 1 MB นั่นหมายความว่าข้อความ Base64 ประมาณ 1.33 MB ค่าใช้จ่ายนี้เป็นต้นทุนของการแทนไบต์ 8 บิตด้วยอักขระ 6 บิต และเป็นสิ่งที่หลีกเลี่ยงไม่ได้ในการเข้ารหัสนี้ — ไม่มีการนำไปใช้งานใดหลีกเลี่ยงได้ อย่างไรก็ตาม การเข้ารหัสไฟล์เป็น Base64 ยังคงเป็นวิธีมาตรฐานสำหรับการฝังข้อมูลไบนารีในรูปแบบข้อความเท่านั้น ตามที่ระบุใน MIME (RFC 2045), data URIs (RFC 2397) และ JSON Web Tokens (RFC 7519)
ทำไมต้องใช้เครื่องมือเข้ารหัสไฟล์เป็น Base64 นี้?
เครื่องมือนี้เข้ารหัสไฟล์เป็น Base64 โดยตรงในเบราว์เซอร์ของคุณโดยใช้ FileReader API ไม่มีไฟล์ใดถูกอัปโหลดไปยังเซิร์ฟเวอร์ — กระบวนการแปลงทั้งหมดเกิดขึ้นฝั่ง client ใน JavaScript
กรณีการใช้งานการเข้ารหัสไฟล์เป็น Base64
ค่าใช้จ่ายด้านขนาดไฟล์ของ Base64
การเข้ารหัส Base64 เพิ่มขนาดข้อมูลหนึ่งในสาม ทุก 3 ไบต์ของข้อมูลขาเข้าจะสร้างอักขระขาออก 4 ตัว (แต่ละตัวแทน 6 บิต) อักขระเติม (=) จะถูกเพิ่มเมื่อความยาวข้อมูลขาเข้าไม่ใช่ทวีคูณของ 3 ตารางด้านล่างแสดงความสัมพันธ์ระหว่างขนาดไฟล์ต้นฉบับและขนาดผลลัพธ์หลังเข้ารหัส
| ขนาดไฟล์ | ไบต์ดิบ | ไบต์ 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 Type
data URI ฝังเนื้อหาไฟล์โดยตรงใน HTML, CSS หรือ JavaScript โดยใช้รูปแบบ data:[MIME type];base64,[encoded data] MIME type บอกเบราว์เซอร์ว่าจะแปลไบต์ที่ถอดรหัสอย่างไร ด้านล่างคือนามสกุลไฟล์ทั่วไป MIME types ของพวกมัน และ data URI prefix ที่สอดคล้องกัน
| นามสกุล | MIME Type | Data URI Prefix |
|---|---|---|
| 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 Section 4) พร้อมการเติม
// 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)
}