Uint8Array.prototype.toBase64()
Baseline 2025>
Neu verfügbar
Seit September 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die Methode toBase64() von Uint8Array-Instanzen gibt einen base64-kodierten String zurück, der auf den Daten in diesem Uint8Array-Objekt basiert.
Diese Methode ist Window.btoa() vorzuziehen, insbesondere wenn die Daten bereits in einem Uint8Array vorliegen, da Sie sie nicht zuerst in einen String umwandeln müssen.
Syntax
toBase64()
toBase64(options)
Parameter
optionsOptional-
Ein Objekt, mit dem sich das Format des base64-Strings anpassen lässt. Es kann die folgenden Eigenschaften enthalten:
alphabetOptional-
Ein String, der das zu verwendende base64-Alphabet angibt. Einer der folgenden Werte ist möglich:
"base64"(Standardwert)-
Kodiert die Eingabe mit dem Standard-base64-Alphabet, das
+und/verwendet. "base64url"-
Kodiert die Eingabe mit dem URL-sicheren base64-Alphabet, das
-und_verwendet.
omitPaddingOptional-
Ein boolescher Wert, der angibt, ob Auffüllzeichen (
=) am Ende des base64-Strings weggelassen werden sollen. Der Standardwert istfalse.
Rückgabewert
Ein base64-kodierter String, der die Daten im Uint8Array darstellt.
Ausnahmen
TypeError-
Wird in einem der folgenden Fälle ausgelöst:
- Das Argument
optionsist weder ein Objekt nochundefined. options.alphabethat keinen der erwarteten Werte und ist auch nichtundefined.
- Das Argument
Beispiele
>Binärdaten kodieren
Dieses Beispiel verwendet die Standardwerte für alphabet und omitPadding, um Daten aus einem Uint8Array in einen base64-String zu kodieren.
const uint8Array = new Uint8Array([29, 233, 101, 161]);
console.log(uint8Array.toBase64()); // "HelloQ=="
Daten ohne Auffüllzeichen kodieren
const uint8Array = new Uint8Array([29, 233, 101, 161]);
console.log(uint8Array.toBase64({ omitPadding: true })); // "HelloQ"
Daten mit URL-sicherem Alphabet kodieren
Dieses Beispiel befüllt ein URLSearchParams-Objekt mit einem base64-kodierten String unter Verwendung des URL-sicheren Alphabets.
const uint8Array = new Uint8Array([46, 139, 222, 255, 42, 46]);
const base64 = uint8Array.toBase64({ alphabet: "base64url" });
const params = new URLSearchParams();
params.set("data", base64);
console.log(params.toString()); // "data=Love_you"
Stream-Kodierung
Dieses Beispiel wurde aus dem ursprünglichen Vorschlag übernommen und zeigt, wie Streaming im Anwendungscode implementiert werden kann. Es ahmt die TextEncoder-API mit der Option stream nach.
class Base64Encoder {
#extra;
#extraLength;
constructor() {
this.#extra = new Uint8Array(3);
this.#extraLength = 0;
}
// Partly derived from https://github.com/lucacasonato/base64_streams/blob/main/src/iterator/encoder.ts
encode(chunk = Uint8Array.of(), options = {}) {
const stream = options.stream ?? false;
if (this.#extraLength > 0) {
const bytesNeeded = 3 - this.#extraLength;
const bytesAvailable = Math.min(bytesNeeded, chunk.length);
this.#extra.set(chunk.subarray(0, bytesAvailable), this.#extraLength);
chunk = chunk.subarray(bytesAvailable);
this.#extraLength += bytesAvailable;
}
if (!stream) {
// assert: this.#extraLength.length === 0 || this.#extraLength === 3 || chunk.length === 0
const prefix = this.#extra.subarray(0, this.#extraLength).toBase64();
this.#extraLength = 0;
return prefix + chunk.toBase64();
}
let extraReturn = "";
if (this.#extraLength === 3) {
extraReturn = this.#extra.toBase64();
this.#extraLength = 0;
}
const remainder = chunk.length % 3;
if (remainder > 0) {
this.#extra.set(chunk.subarray(chunk.length - remainder));
this.#extraLength = remainder;
chunk = chunk.subarray(0, chunk.length - remainder);
}
return extraReturn + chunk.toBase64();
}
}
const encoder = new Base64Encoder();
console.log(
encoder.encode(Uint8Array.of(72, 101, 108, 108, 111), { stream: true }),
);
// "SGVs"
console.log(
encoder.encode(Uint8Array.of(32, 87, 111, 114, 108, 100), { stream: true }),
);
// "bG8gV29y"
console.log(encoder.encode());
// "bGQ="
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-uint8array.prototype.tobase64> |