Cikgu Pangkalan64 untuk Pembangunan Frontend
Panduan komprehensif untuk memahami Pangkalan64 pengekodan, penyahkodan dan aplikasi praktikal dalam reka bentuk web moden.
Cuba Pangkalan64 Pengekodan/Penyahkodan
Apa yang Tepat Pangkalan64?
Pangkalan64 ialah skema pengekodan binari-ke-teks yang menukar data binari (seperti imej, fail atau bait mentah) kepada aksara ASCII. Penukaran ini membolehkan data binari dihantar dan disimpan dengan selamat dalam sistem yang direka untuk data teks sahaja—seperti protokol e-mel, HTML atau respons API.
Nama "Base64" berasal daripada penggunaan 64 aksara yang berbeza (A-Z, a-z, 0-9, '+' dan '/') untuk mewakili nilai binari. setiap satu Pangkalan64 aksara mengekod 6 bit data, menjadikannya cara yang cekap untuk mengendalikan kandungan perduaan dalam persekitaran tertumpu teks.
Tidak seperti penyulitan, Pangkalan64 bukan langkah keselamatan—ia semata-mata untuk pemformatan data. Sesiapa sahaja boleh menyahkod kandungan Base64 dengan alat asas, jadi ia tidak boleh digunakan untuk melindungi maklumat sensitif.
Set Aksara Base64
* “=" digunakan sebagai aksara padding untuk data yang tidak lengkap
Bagaimana Pangkalan64 Kerja Pengekodan?
-
1
Tukar Data Perduaan kepada Bait 8-bit
Proses bermula dengan data binari (cth., fail imej). Data ini dibahagikan kepada segmen 8-bit (1-bait), yang membentuk input mentah untuk Pangkalan64 pengekodan.
-
2
Kumpulkan Bait ke dalam Ketulan 24-bit
Sejak Pangkalan64 menggunakan aksara 6-bit, bait 8-bit dikumpulkan ke dalam ketulan 24-bit (3-bait). 24 bit boleh dibahagikan sama rata kepada empat segmen 6-bit (4 × 6 = 24).
-
3
Tukar Segmen 6-bit kepada Aksara Base64
Setiap segmen 6-bit ditukar kepada nilai perpuluhan (0–63). Nilai ini kemudiannya dipetakan kepada aksara yang sepadan daripada Pangkalan64 set aksara (cth., 0 = “A”, 1 = “B”, …, 63 = “/”).
-
4
Tambah Padding untuk Potongan Tidak Lengkap
Jika panjang data binari bukan gandaan 3 bait, bahagian akhir tidak akan lengkap. Pangkalan64 menggunakan aksara padding “=” untuk menunjukkan bait yang hilang (1 “=” untuk 1 bait yang hilang, 2 “=" untuk 2 bait yang hilang).
Contoh Pengekodan Base64: Teks "Hai!"
| Langkah | Data Input | Perwakilan Perduaan | Output Base64 |
|---|---|---|---|
| 1. Teks Mentah | “Hai!” | – | – |
| 2. Bait 8-bit (ASCII) | H (72), i (105), ! (33) | 01001000, 01101001, 00100001 | – |
| 3. Potongan 24-bit | 72, 105, 33 | 010010000110100100100001 | – |
| 4. Bahagikan kepada Segmen 6-bit | – | 010010, 000110, 100100, 100001 | – |
| 5. Tukarkan kepada Perpuluhan | – | – | 18, 6, 36, 33 |
| 6. Peta kepada Aksara Base64 | – | – | “Kulit” |
Bahagian hadapan Pangkalan64 Kes Penggunaan
URL Data untuk Imej
Benamkan imej kecil (seperti ikon atau avatar) terus ke dalam HTML/CSS menggunakan Pangkalan64 URL data. Ini mengurangkan permintaan HTTP dan meningkatkan kelajuan pemuatan halaman untuk aset kecil.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Icon">
Penghantaran Data Binari API
Hantar data binari (seperti fail atau PDF) melalui REST API dengan mengekodkannya ke Pangkalan64. Ini mengelakkan isu dengan rasuah data binari dalam muatan API berasaskan teks (mis., JSON).
{ "fileData": "JVBERi0xLjQKJeLjz9MNCjYgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeAovRjEgMTAgVGYKMDAwLjEwNS4wMDAuMTAwCjAwMC4yOTkuMDAwLjAwMAo...", "fileName": "report.pdf" }
Kekangan Teks Cookie & LocalStorage
Simpan data binari kecil dalam kuki atau LocalStorage (yang hanya menyokong teks) dengan mengekodkannya Pangkalan64. Berguna untuk menyimpan pilihan pengguna atau aset kecil secara tempatan.
// Save Base64 data to LocalStorage
localStorage.setItem('userAvatar', 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...');
Pengekodan Lampiran E-mel
Kebanyakan protokol e-mel (seperti SMTP) adalah teks sahaja. Pangkalan64 digunakan untuk mengekod lampiran e-mel (imej, dokumen) supaya ia boleh dihantar tanpa rasuah.
Content-Type: image/jpeg; name="photo.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="photo.jpg"
/9j/4AAQSkZJRgABAQEAZABkAAD/7QBsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA...
Pengekodan SVG Sebaris
Mengekodkan fail SVG ke Pangkalan64 untuk kegunaan sebaris dalam latar belakang CSS atau atribut HTML. Ini memudahkan pengurusan aset untuk grafik vektor kecil.
.icon {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJBMTAgMTAgMCAwIDEgMjIgMTJBMTAgMTAgMCAwIDEgMTIgMjJBMTAgMTAgMCAwIDEgMiAxMkExMCAxMCAwIDAgMSAxMiAyWiIgc3Ryb2tlPSIjMTY1REZGIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=');
}
Eksport Imej Kanvas
API Kanvas HTML5 menggunakan Pangkalan64 untuk mengeksport kandungan yang dilukis sebagai data imej (melalui toDataURL()). Ini membolehkan menyimpan karya seni atau tangkapan skrin yang dijana pengguna.
// Get Base64 data from Canvas
const canvas = document.getElementById('myCanvas');
const base64Image = canvas.toDataURL('image/png'); // "data:image/png;base64,iVBORw0KGgo..."
Bahagian hadapan Pangkalan64 Contoh Kod
Asas Pangkalan64 Pengekodan/Penyahkodan
Gunakan JavaScript terbina dalam btoa() (binary-to-ASCII) dan atob() (ASCII-to-binary) berfungsi untuk mudah Pangkalan64 operasi. Nota: Fungsi ini berfungsi dengan rentetan UTF-8.
// Encode text to Base64
function encodeToBase64(text) {
// Encode UTF-8 to avoid issues with special characters
const utf8Text = unescape(encodeURIComponent(text));
return btoa(utf8Text);
}
// Decode Base64 to text
function decodeFromBase64(base64String) {
const utf8Text = atob(base64String);
return decodeURIComponent(escape(utf8Text));
}
// Example usage
const originalText = "Hello, Base64!";
const encodedText = encodeToBase64(originalText);
const decodedText = decodeFromBase64(encodedText);
console.log("Original:", originalText); // "Hello, Base64!"
console.log("Encoded:", encodedText); // "SGVsbG8sIEJhc2U2NCE="
console.log("Decoded:", decodedText); // "Hello, Base64!"
Kodkan Imej kepada Pangkalan64
Tukar fail imej (dipilih melalui input fail) kepada Pangkalan64 menggunakan API FileReader. Berguna untuk melihat pratonton imej sebelum memuat naik atau membenamkannya sebaris.
// Get elements from DOM
const fileInput = document.getElementById('image-upload');
const previewImage = document.getElementById('image-preview');
const base64Output = document.getElementById('image-base64');
// Handle file selection
fileInput.addEventListener('change', (e) => {
const file = e.target.files[0];
if (!file || !file.type.startsWith('image/')) {
alert('Please select an image file!');
return;
}
// Create FileReader to read the image
const reader = new FileReader();
// On load, get Base64 data
reader.onload = (event) => {
const base64Data = event.target.result;
// Preview the image
previewImage.src = base64Data;
previewImage.style.display = 'block';
// Show Base64 data (truncated for readability)
const truncatedData = base64Data.length > 100
? base64Data.substring(0, 100) + '...'
: base64Data;
base64Output.textContent = truncatedData;
};
// Read the file as Base64
reader.readAsDataURL(file);
});
Data Base64 (Dipenggal):
Pangkalan64 ke Blob (Muat Turun Fail)
Tukar Pangkalan64 data kembali ke Blob (objek besar binari) untuk mencipta fail yang boleh dimuat turun (cth., PDF, imej) dalam penyemak imbas.
// Convert Base64 to Blob
function base64ToBlob(base64Data, contentType = 'application/octet-stream') {
// Extract Base64 data (remove "data:..." prefix if present)
const base64WithoutPrefix = base64Data.startsWith('data:')
? base64Data.split(',')[1]
: base64Data;
// Decode Base64 to binary string
const binaryString = atob(base64WithoutPrefix);
const byteLength = binaryString.length;
// Convert binary string to Uint8Array
const uint8Array = new Uint8Array(byteLength);
for (let i = 0; i < byteLength; i++) {
uint8Array[i] = binaryString.charCodeAt(i);
}
// Create and return Blob
return new Blob([uint8Array], { type: contentType });
}
// Trigger file download from Blob
function downloadBlobAsFile(blob, fileName) {
// Create temporary URL for Blob
const url = URL.createObjectURL(blob);
// Create anchor element to trigger download
const a = document.createElement('a');
a.href = url;
a.download = fileName;
// Simulate click to start download
document.body.appendChild(a);
a.click();
// Clean up
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// Example: Download Base64 PDF
const base64Pdf = "JVBERi0xLjQKJeLjz9MNCjYgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeAovRjEgMTAgVGYKMDAwLjEwNS4wMDAuMTAwCjAwMC4yOTkuMDAwLjAwMAo...";
const pdfBlob = base64ToBlob(base64Pdf, 'application/pdf');
downloadBlobAsFile(pdfBlob, 'report.pdf');
Vue.js Pangkalan64 Komponen
Komponen Vue.js boleh guna semula untuk Pangkalan64 pengekodan/penyahkodan. Bersepadu dengan sistem kereaktifan Vue untuk kemas kini masa nyata.
<template>
<div class="base64-converter">
<h3 class="text-lg font-semibold mb-4">Vue Base64 Converter</h3>
<!-- Input for text -->
<div class="mb-4">
<label class="block mb-2 text-sm font-medium">Enter Text:</label>
<textarea
v-model="inputText"
class="w-full p-2 border rounded"
rows="3"
placeholder="Type text to encode..."
></textarea>
<button
@click="encode"
class="mt-2 px-4 py-1 bg-primary text-white rounded"
>Encode to Base64</button>
</div>
<!-- Output for Base64 -->
<div class="mb-4">
<label class="block mb-2 text-sm font-medium">Base64 Result:</label>
<textarea
v-model="base64Output"
class="w-full p-2 border rounded"
rows="3"
readonly
></textarea>
<button
@click="decode"
class="mt-2 px-4 py-1 bg-secondary text-white rounded"
>Decode to Text</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
inputText: '',
base64Output: ''
};
},
methods: {
encode() {
if (!this.inputText) return;
// Encode UTF-8 text to Base64
const utf8Text = unescape(encodeURIComponent(this.inputText));
this.base64Output = btoa(utf8Text);
},
decode() {
if (!this.base64Output) return;
// Decode Base64 to UTF-8 text
const utf8Text = atob(this.base64Output);
this.inputText = decodeURIComponent(escape(utf8Text));
}
}
};
</script>
Soalan Lazim Mengenai Pangkalan64
Mula Menggunakan Pangkalan64 dalam Projek Bahagian Hadapan Anda
Sama ada anda membenamkan imej, menghantar fail melalui API atau bekerja dengan kandungan yang dijana pengguna, Pangkalan64 ialah alat penting untuk pembangun web moden. Gunakan contoh kod di atas untuk menyepadukan Pangkalan64 pengekodan dan penyahkodan ke dalam projek anda yang seterusnya.
