មេ មូលដ្ឋាន 64 សម្រាប់ការអភិវឌ្ឍន៍ Frontend

ការណែនាំដ៏ទូលំទូលាយសម្រាប់ការយល់ដឹង មូលដ្ឋាន 64 ការអ៊ិនកូដ ការឌិកូដ និងកម្មវិធីជាក់ស្តែងក្នុងការរចនាគេហទំព័រទំនើប។

ព្យាយាម មូលដ្ឋាន 64 ការអ៊ិនកូដ/ឌិកូដ

អ្វីដែលពិតប្រាកដ មូលដ្ឋាន 64?

មូលដ្ឋាន 64 គឺ​ជា​គ្រោងការណ៍​ការ​បំប្លែង​ទិន្នន័យ​គោលពីរ (ដូច​ជា​រូបភាព ឯកសារ ឬ​បៃ​ឆៅ) ទៅ​ជា​តួអក្សរ ASCII ។ ការបំប្លែងនេះអនុញ្ញាតឱ្យទិន្នន័យប្រព័ន្ធគោលពីរត្រូវបានបញ្ជូន និងរក្សាទុកដោយសុវត្ថិភាពនៅក្នុងប្រព័ន្ធដែលត្រូវបានរចនាឡើងសម្រាប់ទិន្នន័យសម្រាប់តែអត្ថបទ-ដូចជា ពិធីសារអ៊ីមែល HTML ឬការឆ្លើយតប API ជាដើម។

ឈ្មោះ "Base64" បានមកពីការប្រើប្រាស់របស់វា 64 តួអក្សរផ្សេងគ្នា (A-Z, a-z, 0-9, '+', និង '/') ដើម្បីតំណាងឱ្យតម្លៃគោលពីរ។ គ្នា។ មូលដ្ឋាន 64 តួអក្សរអ៊ិនកូដទិន្នន័យ 6 ប៊ីត ដែលធ្វើឱ្យវាក្លាយជាមធ្យោបាយដ៏មានប្រសិទ្ធភាពមួយដើម្បីគ្រប់គ្រងមាតិកាគោលពីរនៅក្នុងបរិស្ថានអត្ថបទដែលផ្តោតលើអត្ថបទ។

មិនដូចការអ៊ិនគ្រីបទេ មូលដ្ឋាន 64 មិន​មែន​ជា​វិធានការ​សុវត្ថិភាព​ទេ—វា​សម្រាប់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ទិន្នន័យ​សុទ្ធសាធ។ នរណាម្នាក់អាចឌិកូដមាតិកា Base64 ដោយប្រើឧបករណ៍មូលដ្ឋាន ដូច្នេះវាមិនគួរត្រូវបានប្រើដើម្បីការពារព័ត៌មានរសើបឡើយ។

សំណុំតួអក្សរ Base64

អ៊ី
ជី
ខ្ញុំ
ខេ
អិល
អូ
ទំ
សំណួរ
យូ
X
Z
អ៊ី
f
g
h
x
y
z
0
ចេក
2
បី
8 ចីម្យង
+
/

* “=” ត្រូវបានប្រើជាតួអក្សរទ្រនាប់សម្រាប់ទិន្នន័យមិនពេញលេញ

តើធ្វើដូចម្តេច មូលដ្ឋាន 64 ការអ៊ិនកូដការងារ?

  1. ចេក

    បំប្លែងទិន្នន័យគោលពីរទៅជាបៃបៃ ៨ ប៊ីត

    ដំណើរការចាប់ផ្តើមដោយទិន្នន័យគោលពីរ (ឧ. ឯកសាររូបភាព)។ ទិន្នន័យនេះត្រូវបានបំបែកជាផ្នែក 8 ប៊ីត (1 បៃ) ដែលបង្កើតជាធាតុបញ្ចូលឆៅសម្រាប់ មូលដ្ឋាន 64 ការអ៊ិនកូដ។

  2. 2

    ក្រុម Bytes ទៅជាកំណាត់ 24 ប៊ីត

    ចាប់តាំងពី មូលដ្ឋាន 64 ប្រើតួអក្សរ 6 ប៊ីត បៃ 8 ប៊ីតត្រូវបានដាក់ជាក្រុមទៅជាកំណាត់ 24 ប៊ីត (3 បៃ) ។ 24 ប៊ីតអាចបែងចែកស្មើៗគ្នាជាបួនផ្នែក 6 ប៊ីត (4 × 6 = 24) ។

  3. បី

    បម្លែងផ្នែក 6 ប៊ីតទៅជាតួអក្សរ Base64

    ផ្នែក 6 ប៊ីតនីមួយៗត្រូវបានបំប្លែងទៅជាតម្លៃទសភាគ (0–63)។ បន្ទាប់​មក​តម្លៃ​នេះ​ត្រូវ​បាន​ផ្គូផ្គង​ទៅ​ជា​តួអក្សរ​ដែល​ត្រូវ​គ្នា​ពី​ មូលដ្ឋាន 64 សំណុំតួអក្សរ (ឧទាហរណ៍ 0 = "A", 1 = "B", ..., 63 = "/") ។

  4. បន្ថែមបន្ទះសម្រាប់កំណាត់មិនពេញលេញ

    ប្រសិនបើប្រវែងទិន្នន័យគោលពីរមិនមែនជាពហុគុណនៃ 3 បៃទេ កំណាត់ចុងក្រោយនឹងមិនពេញលេញទេ។ មូលដ្ឋាន 64 ប្រើតួអក្សរ “=” ដើម្បីចង្អុលបង្ហាញបៃដែលបាត់ (1 “=” សម្រាប់ 1 បៃដែលបាត់, 2 “=” សម្រាប់ 2 បៃដែលបាត់) ។

ឧទាហរណ៍នៃការអ៊ិនកូដ Base64៖ អត្ថបទ “សួស្តី!”

ជំហាន បញ្ចូលទិន្នន័យ តំណាងគោលពីរ លទ្ធផល Base64
1. អត្ថបទដើម “សួស្តី!” - -
2. 8-bit Bytes (ASCII) H (72), i (105), ! (33) 01001000, 01101001, 00100001 -
3. កំណាត់ 24 ប៊ីត ៧២, ១០៥, ៣៣ 010010000110100100100001 -
4. បំបែកជាចម្រៀក 6 ប៊ីត - 010010, 000110, 100100, 100001 -
5. បំប្លែងទៅជាទសភាគ - - ១៨, ៦, ៣៦, ៣៣
6. ផែនទីទៅ Base64 តួអក្សរ - - "ស្បែក"

ផ្នែកខាងមុខ មូលដ្ឋាន 64 ប្រើករណី

ទិន្នន័យ URLs សម្រាប់រូបភាព

បង្កប់រូបភាពតូចៗ (ដូចជារូបតំណាង ឬរូបតំណាង) ដោយផ្ទាល់ទៅក្នុង HTML/CSS ដោយប្រើ មូលដ្ឋាន 64 URLs ទិន្នន័យ។ វាកាត់បន្ថយសំណើ HTTP និងបង្កើនល្បឿនផ្ទុកទំព័រសម្រាប់ទ្រព្យសកម្មតូចៗ។

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Icon">

ការបញ្ជូនទិន្នន័យ API Binary

បញ្ជូនទិន្នន័យគោលពីរ (ដូចជាឯកសារ ឬ PDFs) តាមរយៈ REST APIs ដោយអ៊ិនកូដវាទៅ មូលដ្ឋាន 64. វាជៀសវាងបញ្ហាជាមួយនឹងការខូចទិន្នន័យប្រព័ន្ធគោលពីរនៅក្នុងបន្ទុក API ផ្អែកលើអត្ថបទ (ឧ. JSON)។

{ "fileData": "JVBERi0xLjQKJeLjz9MNCjYgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeAovRjEgMTAgVGYKMDAwLjEwNS4wMDAuMTAwCjAwMC4yOTkuMDAwLjAwMAo...", "fileName": "report.pdf" }

Cookie & LocalStorage Text Constraints

រក្សាទុកទិន្នន័យគោលពីរតូចនៅក្នុងខូគី ឬ LocalStorage (ដែលគាំទ្រតែអត្ថបទ) ដោយអ៊ិនកូដវាទៅ មូលដ្ឋាន 64. មានប្រយោជន៍សម្រាប់ការរក្សាទុកចំណូលចិត្តរបស់អ្នកប្រើប្រាស់ ឬទ្រព្យសម្បត្តិតូចៗនៅក្នុងមូលដ្ឋាន។

// Save Base64 data to LocalStorage
localStorage.setItem('userAvatar', 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...');

ការអ៊ិនកូដឯកសារភ្ជាប់អ៊ីមែល

ពិធីការអ៊ីមែលភាគច្រើន (ដូចជា SMTP) គឺសម្រាប់តែអត្ថបទប៉ុណ្ណោះ។ មូលដ្ឋាន 64 ត្រូវបានប្រើដើម្បីអ៊ិនកូដឯកសារភ្ជាប់អ៊ីមែល (រូបភាព ឯកសារ) ដូច្នេះពួកគេអាចបញ្ជូនបានដោយគ្មានអំពើពុករលួយ។

Content-Type: image/jpeg; name="photo.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="photo.jpg"

/9j/4AAQSkZJRgABAQEAZABkAAD/7QBsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA...

ការអ៊ិនកូដ SVG ក្នុងជួរ

អ៊ិនកូដឯកសារ SVG ទៅ មូលដ្ឋាន 64 សម្រាប់ការប្រើប្រាស់ក្នុងជួរក្នុងផ្ទៃខាងក្រោយ CSS ឬគុណលក្ខណៈ HTML ។ វាជួយសម្រួលការគ្រប់គ្រងទ្រព្យសកម្មសម្រាប់ក្រាហ្វិកវ៉ិចទ័រតូច។

.icon {
  background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJBMTAgMTAgMCAwIDEgMjIgMTJBMTAgMTAgMCAwIDEgMTIgMjJBMTAgMTAgMCAwIDEgMiAxMkExMCAxMCAwIDAgMSAxMiAyWiIgc3Ryb2tlPSIjMTY1REZGIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=');
}

ការនាំចេញរូបភាពផ្ទាំងក្រណាត់

HTML5 Canvas API ប្រើ មូលដ្ឋាន 64 ដើម្បីនាំចេញមាតិកាដែលបានគូរជាទិន្នន័យរូបភាព (តាមរយៈ toDataURL()) វាអនុញ្ញាតឱ្យរក្សាទុកស្នាដៃសិល្បៈ ឬរូបថតអេក្រង់ដែលបង្កើតឡើងដោយអ្នកប្រើប្រាស់។

// Get Base64 data from Canvas
const canvas = document.getElementById('myCanvas');
const base64Image = canvas.toDataURL('image/png'); // "data:image/png;base64,iVBORw0KGgo..."

ផ្នែកខាងមុខ មូលដ្ឋាន 64 ឧទាហរណ៍នៃកូដ

នៃមុលដ្ឋាន មូលដ្ឋាន 64 ការអ៊ិនកូដ/ឌិកូដ

ប្រើ JavaScript ដែលភ្ជាប់មកជាមួយ btoa() (binary-to-ASCII) និង atob() (ASCII-to-binary) មុខងារសម្រាប់សាមញ្ញ មូលដ្ឋាន 64 ប្រតិបត្តិការ។ ចំណាំ៖ មុខងារទាំងនេះដំណើរការជាមួយខ្សែអក្សរ 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!"

អ៊ិនកូដរូបភាពទៅ មូលដ្ឋាន 64

បំប្លែងឯកសាររូបភាព (បានជ្រើសរើសតាមរយៈការបញ្ចូលឯកសារ) ទៅ មូលដ្ឋាន 64 ដោយប្រើ FileReader API ។ មានប្រយោជន៍សម្រាប់ការមើលរូបភាពមុននឹងបង្ហោះ ឬបង្កប់ពួកវាក្នុងជួរ។

// 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 (កាត់ចេញ)៖

មូលដ្ឋាន 64 ទៅ Blob (ទាញយកឯកសារ)

ផ្លាស់ មូលដ្ឋាន 64 ទិន្នន័យត្រឡប់ទៅ Blob (វត្ថុគោលពីរធំ) ដើម្បីបង្កើតឯកសារដែលអាចទាញយកបាន (ឧ. PDFs រូបភាព) នៅក្នុងកម្មវិធីរុករក។

// 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 មូលដ្ឋាន 64 សមាសភាគ

សមាសធាតុ Vue.js ដែលអាចប្រើឡើងវិញបានសម្រាប់ មូលដ្ឋាន 64 ការអ៊ិនកូដ/ឌិកូដ។ រួមបញ្ចូលជាមួយប្រព័ន្ធប្រតិកម្មរបស់ Vue សម្រាប់ការអាប់ដេតតាមពេលវេលាជាក់ស្តែង។

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

សំណួរដែលគេសួរញឹកញាប់អំពី មូលដ្ឋាន 64

ចាប់ផ្តើមប្រើ មូលដ្ឋាន 64 នៅក្នុងគម្រោង Frontend របស់អ្នក។

មិនថាអ្នកកំពុងបង្កប់រូបភាព បញ្ជូនឯកសារតាមរយៈ APIs ឬធ្វើការជាមួយមាតិកាដែលបង្កើតដោយអ្នកប្រើប្រាស់ទេ មូលដ្ឋាន 64 គឺជាឧបករណ៍សំខាន់សម្រាប់អ្នកបង្កើតគេហទំព័រទំនើប។ ប្រើឧទាហរណ៍កូដខាងលើដើម្បីរួមបញ្ចូល មូលដ្ឋាន 64 ការអ៊ិនកូដ និងការឌិកូដទៅក្នុងគម្រោងបន្ទាប់របស់អ្នក។