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

A
B
C
D
e
F
G
H
BEN
J
k
L
M
N
O
P
Q
R
S
T
sen
V
K
X
e
Z
A
B
C
D
e
F
G
H
X
sen
z
0
1
2
3
4
5
6
7
8
9
+
/

* “=” eksik veriler için dolgu karakteri olarak kullanılır

Nasıl Base64 Kodlama İşi mi?

  1. 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. 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. 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. 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.