Usta Base64 Ön Uç Geliştirme için
Anlamak için kapsamlı bir rehber Base64 Modern web tasarımında kodlama, kod çözme ve pratik uygulamalar.
Denemek Base64 Kodlama/Kod Çözme
Tam olarak nedir Base64?
Base64 ikili verileri (görüntüler, dosyalar veya ham baytlar gibi) ASCII karakterlerine dönüştüren ikiliden metne kodlama şemasıdır. Bu dönüştürme, ikili verilerin e-posta protokolleri, HTML veya API yanıtları gibi salt metin verileri için tasarlanmış sistemlerde güvenli bir şekilde iletilmesine ve saklanmasına olanak tanır.
"Base64" adı, ikili değerleri temsil etmek için 64 farklı karakterin (A-Z, a-z, 0-9, '+' ve '/') kullanılmasından gelir. Her biri Base64 karakter 6 bitlik veriyi kodlar, bu da onu metin merkezli ortamlarda ikili içeriği işlemenin etkili bir yolu haline getirir.
Şifrelemeden farklı olarak Base64 bir güvenlik önlemi değildir; yalnızca veri biçimlendirmeye yöneliktir. Base64 içeriğinin kodunu herkes temel araçlarla çözebilir; dolayısıyla hassas bilgileri korumak için asla kullanılmamalıdır.
Base64 Karakter Seti
* “=” eksik veriler için dolgu karakteri olarak kullanılır
Nasıl Base64 Kodlama İşi mi?
-
1
İkili Verileri 8 bit Bayta Dönüştür
İşlem ikili verilerle (örneğin bir görüntü dosyası) başlar. Bu veriler, ham girdiyi oluşturan 8 bitlik (1 baytlık) parçalara bölünmüştür. Base64 kodlama.
-
2
Baytları 24 bitlik Parçalara Gruplayın
O zamandan beri Base64 6 bitlik karakterler kullanır, 8 bitlik baytlar 24 bitlik (3 baytlık) parçalar halinde gruplanır. 24 bit, dört adet 6 bitlik bölüme eşit olarak bölünebilir (4 × 6 = 24).
-
3
6-bit Segmentleri Base64 Karakterlerine Dönüştür
Her 6 bitlik bölüm bir ondalık değere (0-63) dönüştürülür. Bu değer daha sonra karşılık gelen bir karakterle eşlenir. Base64 karakter seti (örneğin, 0 = “A”, 1 = “B”, …, 63 = “/”).
-
4
Tamamlanmamış Parçalar için Dolgu Ekle
İkili veri uzunluğu 3 baytın katı değilse son parça eksik olacaktır. Base64 eksik baytları belirtmek için “=” dolgu karakterlerini kullanır (1 eksik bayt için 1 “=”, 2 eksik bayt için 2 “=”).
Base64 Kodlama Örneği: Metin “Merhaba!”
| Adım | Giriş Verileri | İkili Temsil | Base64 Çıkışı |
|---|---|---|---|
| 1. Ham Metin | "MERHABA!" | – | – |
| 2. 8 bit Bayt (ASCII) | H (72), i (105), ! (33) | 01001000, 01101001, 00100001 | – |
| 3. 24 bitlik Parça | 72, 105, 33 | 010010000110100100100001 | – |
| 4. 6 bitlik Segmentlere Bölün | – | 010010, 000110, 100100, 100001 | – |
| 5. Ondalık Sayıya Dönüştürün | – | – | 18, 6, 36, 33 |
| 6. Base64 Karakterleriyle Eşleyin | – | – | "Deri" |
Başlangıç aşaması Base64 Kullanım Durumları
Görseller için Veri URL'leri
Küçük resimleri (simgeler veya avatarlar gibi) kullanarak doğrudan HTML/CSS'ye gömün Base64 Veri URL'leri. Bu, HTTP isteklerini azaltır ve küçük varlıklar için sayfa yükleme hızını artırır.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Icon">
API İkili Veri İletimi
İkili verileri (dosyalar veya PDF'ler gibi) REST API'leri aracılığıyla kodlayarak iletin Base64. Bu, metin tabanlı API yüklerinde (ör. JSON) ikili veri bozulmasıyla ilgili sorunları önler.
{ "fileData": "JVBERi0xLjQKJeLjz9MNCjYgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeAovRjEgMTAgVGYKMDAwLjEwNS4wMDAuMTAwCjAwMC4yOTkuMDAwLjAwMAo...", "fileName": "report.pdf" }
Çerez ve LocalStorage Metin Kısıtlamaları
Küçük ikili verileri çerezlerde veya LocalStorage'da (yalnızca metni destekleyen) depolayın Base64. Kullanıcı tercihlerini veya küçük varlıkları yerel olarak kaydetmek için kullanışlıdır.
// Save Base64 data to LocalStorage
localStorage.setItem('userAvatar', 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...');
E-posta Ek Kodlaması
Çoğu e-posta protokolü (SMTP gibi) salt metindir. Base64 E-posta eklerini (resimler, belgeler) bozulmadan iletilebilmeleri için kodlamak için kullanılır.
Content-Type: image/jpeg; name="photo.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="photo.jpg"
/9j/4AAQSkZJRgABAQEAZABkAAD/7QBsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA...
Satır içi SVG Kodlaması
SVG dosyalarını şu şekilde kodlayın: Base64 CSS arka planlarında veya HTML niteliklerinde satır içi kullanım için. Bu, küçük vektör grafikleri için varlık yönetimini basitleştirir.
.icon {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJBMTAgMTAgMCAwIDEgMjIgMTJBMTAgMTAgMCAwIDEgMTIgMjJBMTAgMTAgMCAwIDEgMiAxMkExMCAxMCAwIDAgMSAxMiAyWiIgc3Ryb2tlPSIjMTY1REZGIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=');
}
Kanvas Görüntü Dışa Aktarma
HTML5 Canvas API'nin kullandığı Base64 çizilen içeriği görüntü verileri olarak dışa aktarmak için (üzerinden toDataURL()). Bu, kullanıcı tarafından oluşturulan çizimlerin veya ekran görüntülerinin kaydedilmesine olanak tanır.
// Get Base64 data from Canvas
const canvas = document.getElementById('myCanvas');
const base64Image = canvas.toDataURL('image/png'); // "data:image/png;base64,iVBORw0KGgo..."
Başlangıç aşaması Base64 Kod Örnekleri
Temel Base64 Kodlama/Kod Çözme
JavaScript'in yerleşik özelliğini kullanın btoa() (ikiliden ASCII'ye) ve atob() Basit işlemler için (ASCII'den ikiliye) işlevler Base64 operasyonlar. Not: Bu işlevler UTF-8 dizeleriyle çalışır.
// 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!"
Görüntüyü Kodla Base64
Bir görüntü dosyasını (dosya girişi yoluyla seçilen) şuna dönüştürün: Base64 FileReader API'sini kullanarak. Resimleri yüklemeden veya satır içi yerleştirmeden önce önizlemek için kullanışlıdır.
// 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);
});
Base64 Verileri (Kesilmiş):
Base64 Blob'a (Dosyayı İndir)
Dönüştürmek Base64 tarayıcıda indirilebilir dosyalar (ör. PDF'ler, resimler) oluşturmak için verileri bir Blob'a (ikili büyük nesne) geri gönderir.
// 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 Base64 Bileşen
Yeniden kullanılabilir bir Vue.js bileşeni Base64 kodlama/kod çözme. Gerçek zamanlı güncellemeler için Vue'nun reaktivite sistemiyle bütünleşir.
<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>
Hakkında Sıkça Sorulan Sorular Base64
Kullanmaya Başlayın Base64 Ön Uç Projelerinizde
İster resim ekliyor olun, ister API'ler yoluyla dosya aktarıyor olun, ister kullanıcı tarafından oluşturulan içerikle çalışıyor olun, Base64 modern web geliştiricileri için önemli bir araçtır. Entegre etmek için yukarıdaki kod örneklerini kullanın Base64 Bir sonraki projenizde kodlama ve kod çözme.
