Maître Base64 pour le développement front-end
Un guide complet pour comprendre Base64 encodage, décodage et applications pratiques dans la conception Web moderne.
Essayer Base64 Encodage/Décodage
Qu'est-ce que c'est exactement Base64?
Base64 est un système de codage binaire en texte qui convertit les données binaires (comme les images, les fichiers ou les octets bruts) en caractères ASCII. Cette conversion permet aux données binaires d'être transmises et stockées en toute sécurité dans des systèmes conçus pour les données texte uniquement, tels que les protocoles de courrier électronique, HTML ou les réponses API.
Le nom « Base64 » vient de son utilisation de 64 caractères distincts (A-Z, a-z, 0-9, « + » et « / ») pour représenter des valeurs binaires. Chaque Base64 Le caractère code 6 bits de données, ce qui en fait un moyen efficace de gérer le contenu binaire dans des environnements centrés sur le texte.
Contrairement au cryptage, Base64 n’est pas une mesure de sécurité, c’est uniquement pour le formatage des données. N’importe qui peut décoder le contenu Base64 avec des outils de base, il ne doit donc jamais être utilisé pour protéger des informations sensibles.
Jeu de caractères Base64
* « = » est utilisé comme caractère de remplissage pour les données incomplètes
Comment Base64 Travail d'encodage ?
- 1
Convertir des données binaires en octets de 8 bits
Le processus commence par des données binaires (par exemple, un fichier image). Ces données sont divisées en segments de 8 bits (1 octet), qui constituent l'entrée brute pour Base64 codage.
- 2
Regrouper les octets en morceaux de 24 bits
Depuis Base64 utilise des caractères de 6 bits, les octets de 8 bits sont regroupés en morceaux de 24 bits (3 octets). 24 bits peuvent être divisés uniformément en quatre segments de 6 bits (4 × 6 = 24).
- 3
Convertir des segments 6 bits en caractères Base64
Chaque segment de 6 bits est converti en valeur décimale (0 à 63). Cette valeur est ensuite mappée à un caractère correspondant du Base64 jeu de caractères (par exemple, 0 = « A », 1 = « B », …, 63 = « / »).
- 4
Ajouter un remplissage pour les morceaux incomplets
Si la longueur des données binaires n’est pas un multiple de 3 octets, le morceau final sera incomplet. Base64 utilise des caractères de remplissage « = » pour indiquer les octets manquants (1 « = » pour 1 octet manquant, 2 « = » pour 2 octets manquants).
Exemple d'encodage Base64 : texte « Salut ! »
| Étape | Données d'entrée | Représentation binaire | Sortie Base64 |
|---|---|---|---|
| 1. Texte brut | "Salut!" | – | – |
| 2. Octets de 8 bits (ASCII) | H (72), je (105), ! (33) | 01001000, 01101001, 00100001 | – |
| 3. Morceau de 24 bits | 72, 105, 33 | 010010000110100100100001 | – |
| 4. Divisé en segments de 6 bits | – | 010010, 000110, 100100, 100001 | – |
| 5. Convertir en décimal | – | – | 18, 6, 36, 33 |
| 6. Mapper aux caractères Base64 | – | – | "Peau" |
L'extrémité avant Base64 Cas d'utilisation
URL de données pour les images
Intégrez de petites images (comme des icônes ou des avatars) directement dans HTML/CSS en utilisant Base64 URL de données. Cela réduit les requêtes HTTP et améliore la vitesse de chargement des pages pour les petits actifs.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Icon">
Transmission de données binaires API
Transmettez des données binaires (comme des fichiers ou des PDF) via les API REST en les codant dans Base64. Cela évite les problèmes de corruption des données binaires dans les charges utiles d'API basées sur du texte (par exemple, JSON).
{ "fileData": "JVBERi0xLjQKJeLjz9MNCjYgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlciAvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeAovRjEgMTAgVGYKMDAwLjEwNS4wMDAuMTAwCjAwMC4yOTkuMDAwLjAwMAo...", "fileName": "report.pdf" }
Contraintes de texte en matière de cookies et de stockage local
Stockez de petites données binaires dans des cookies ou LocalStorage (qui ne prennent en charge que le texte) en les codant dans Base64. Utile pour enregistrer les préférences utilisateur ou les petits actifs localement.
// Save Base64 data to LocalStorage
localStorage.setItem('userAvatar', 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...');
Encodage des pièces jointes aux e-mails
La plupart des protocoles de messagerie (comme SMTP) contiennent uniquement du texte. Base64 est utilisé pour encoder les pièces jointes des e-mails (images, documents) afin qu'elles puissent être transmises sans corruption.
Content-Type: image/jpeg; name="photo.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="photo.jpg"
/9j/4AAQSkZJRgABAQEAZABkAAD/7QBsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA...
Encodage SVG en ligne
Encoder des fichiers SVG dans Base64 pour une utilisation en ligne dans les arrière-plans CSS ou les attributs HTML. Cela simplifie la gestion des actifs pour les petits graphiques vectoriels.
.icon {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJBMTAgMTAgMCAwIDEgMjIgMTJBMTAgMTAgMCAwIDEgMTIgMjJBMTAgMTAgMCAwIDEgMiAxMkExMCAxMCAwIDAgMSAxMiAyWiIgc3Ryb2tlPSIjMTY1REZGIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4=');
}
Exportation d’images sur toile
L'API HTML5 Canvas utilise Base64 pour exporter le contenu dessiné sous forme de données d'image (via toDataURL()). Cela permet d'enregistrer des illustrations ou des captures d'écran générées par l'utilisateur.
// Get Base64 data from Canvas
const canvas = document.getElementById('myCanvas');
const base64Image = canvas.toDataURL('image/png'); // "data:image/png;base64,iVBORw0KGgo..."
L'extrémité avant Base64 Exemples de codes
Basique Base64 Encodage/Décodage
Utilisez le module intégré de JavaScript btoa() (binaire vers ASCII) et atob() (ASCII vers binaire) pour des opérations simples Base64 opérations. Remarque : Ces fonctions fonctionnent avec les chaînes 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!" Encoder l'image dans Base64
Convertir un fichier image (sélectionné via l'entrée de fichier) en Base64 en utilisant l'API FileReader. Utile pour prévisualiser les images avant de les télécharger ou de les intégrer en ligne.
// 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);
}); Données Base64 (tronquées) :
Base64 vers Blob (télécharger le fichier)
Convertir Base64 données vers un Blob (grand objet binaire) pour créer des fichiers téléchargeables (par exemple, des PDF, des images) dans le navigateur.
// 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 Composant
Un composant Vue.js réutilisable pour Base64 encodage/décodage. S'intègre au système de réactivité de Vue pour des mises à jour en temps réel.
<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> Foire aux questions sur Base64
Commencez à utiliser Base64 dans vos projets frontend
Que vous intégriez des images, transmettiez des fichiers via des API ou travailliez avec du contenu généré par l'utilisateur, Base64 est un outil essentiel pour les développeurs Web modernes. Utilisez les exemples de code ci-dessus pour intégrer Base64 l'encodage et le décodage dans votre prochain projet.