ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で Base64 文字列を BLOB に変換するにはどうすればよいですか?

JavaScript で Base64 文字列を BLOB に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-24 16:09:15774ブラウズ

How to Convert a Base64 String to a Blob in JavaScript?

JavaScript で Base64 文字列から BLOB を作成する

base64 文字列としてエンコードされたバイナリ データを扱う場合、変換が必要になる場合があります。それを Blob オブジェクトに変換します。これは、Web ブラウザでデータを表示したり、ユーザーのデバイスにデータを保存したりする場合に役立ちます。

Base64 文字列のデコード

最初のステップは、base64 をデコードすることです。 string をバイト文字の文字列に変換します。これは、atob 関数を使用して実現できます。

const byteCharacters = atob(b64Data);

バイト文字をバイト配列に変換する

次に、バイト文字を実数型のバイト配列に変換します。これは、バイト文字を Uint8Array コンストラクターに渡すことで実行できます。

const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
    byteNumbers[i] = byteCharacters.charCodeAt(i);
}

const byteArray = new Uint8Array(byteNumbers);

Blob オブジェクトの作成

最後に、ラップできます。配列内のバイト配列を Blob に渡します

const blob = new Blob([byteArray], {type: contentType});

パフォーマンスの最適化

上記のコードは機能しますが、バイト文字をより小さなスライスで処理することでパフォーマンスを向上させることができます。通常、スライス サイズは 512 バイトが適切な選択です。

関数例

次に、最適化されたアプローチを使用して、base64 文字列を Blob オブジェクトに変換する関数を示します。

const b64toBlob = (b64Data, contentType='', sliceSize=512) => {
  const byteCharacters = atob(b64Data);
  const byteArrays = [];

  for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    const slice = byteCharacters.slice(offset, offset + sliceSize);

    const byteNumbers = new Array(slice.length);
    for (let i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    const byteArray = new Uint8Array(byteNumbers);
    byteArrays.push(byteArray);
  }
    
  const blob = new Blob(byteArrays, {type: contentType});
  return blob;
};

の使用法例

関数を使用するには、base64 文字列とコンテンツ タイプを引数として渡すだけです。

const blob = b64toBlob(b64Data, contentType);

結果の Blob オブジェクトを使用して、イメージを作成したり、データ。

以上がJavaScript で Base64 文字列を BLOB に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。