JavaScriptのBase 64文字列への変換
5676 ワード
Webブラウザは、Web開発者がデータを管理、操作、およびデータを格納するために使用するさまざまなデータプリミティブを提供します-プレーンテキストから、ファイル、画像、ビデオなど.しかし、それらを正しく使用して効果的に混乱することができます.そのような例の1つは、JavaScriptを使用してBase 64文字列をBLOBに変換することです.エーblob 画像やビデオなどのファイルの形式でバイナリデータを表します.あなたがサーバーにアップロードされる必要があるストリング形式でイメージを持っていると仮定してください.しかし、利用可能なAPIはBLOB形式だけでイメージを受け入れます.何をしますか.
様々な解決策に従ってaround the Internet , 変換は複雑であるように見えます.バイト配列の操作?いいえ.幸いにも、簡単に、現代的なアプローチ利用可能なおかげでFetch API . それはあなたのバックエンドAPIにHTTPリクエストを作るように一般的にネットワーク全体のリソースを取得するために使用されるすべてのWebブラウザに組み込まれている強力な機能です.
ワン、ツー
まず、base 64 stringを
Blobをbase 64文字列に変換する
BlobからBase 64文字列への変換を反転する方法は?残念ながら、これは少し複雑です(あなたがより良いアプローチを知っているならば、コメントで知らせてください!
私はこの現実世界の例に遭遇しましたIonifits demo app . 一方、企業の経費を入力すると、ユーザーが経費領収書の写真を撮る.これを実現するためにCamera and Filesystem エイプ.
写真を撮った後、カメラAPIはBLOB URLを返します.
このように様々なテクニックがありますが、非同期プログラミングのファンとして、FileReader API BLOBを変換するには、次の手順に従います.
様々な解決策に従ってaround the Internet , 変換は複雑であるように見えます.バイト配列の操作?いいえ.幸いにも、簡単に、現代的なアプローチ利用可能なおかげでFetch API . それはあなたのバックエンドAPIにHTTPリクエストを作るように一般的にネットワーク全体のリソースを取得するために使用されるすべてのWebブラウザに組み込まれている強力な機能です.
Fetch
aを返すResponse object . それが判明すると、それだけでJSON以上のデータに変換することができます、また、配列バッファ、フォームデータ、およびblobsを返すことができます.この場合、我々はblobsを使用します.ワン、ツー
まず、base 64 stringを
fetch
:const base64Data = "aGV5IHRoZXJl";
const base64 = await fetch(base64Data);
base 64文字列の形式によっては、content typeデータを追加する必要があります.たとえば、JPEGイメージconst base64Response = await fetch(`data:image/jpeg;base64,${base64Data}`);
次に、レスポンスをBLOBに変換します.const blob = await base64Response.blob();
それだ!ここから、サーバーにアップロードすることができます画面上に表示し、より.Blobをbase 64文字列に変換する
BlobからBase 64文字列への変換を反転する方法は?残念ながら、これは少し複雑です(あなたがより良いアプローチを知っているならば、コメントで知らせてください!
私はこの現実世界の例に遭遇しましたIonifits demo app . 一方、企業の経費を入力すると、ユーザーが経費領収書の写真を撮る.これを実現するためにCamera and Filesystem エイプ.
写真を撮った後、カメラAPIはBLOB URLを返します.
https://myapp.com/cc7622aa-271b-4ee3-b707-28cbc84bc37a
ファイルシステム(一時的にブラウザメモリに一時的に読み込まれるオブジェクト)に写真を保存するには、ファイルシステムAPIはデータをbase 64形式にする必要があるので、Blobをbase 64文字列に変換する必要があります.このように様々なテクニックがありますが、非同期プログラミングのファンとして、FileReader API BLOBを変換するには、次の手順に従います.
convertBlobToBase64 = (blob) => new Promise((resolve, reject) => {
const reader = new FileReader;
reader.onerror = reject;
reader.onload = () => {
resolve(reader.result);
};
reader.readAsDataURL(blob);
});
const base64String = await convertBlobToBase64(blob);
ベール!現代のWeb開発技術を使用して、BlobとBase 64の文字列を前後に変換することは、結局とても怖いです.他のヒントやトリックは、最近あなたのウェブ開発の旅でピックアップしている?Special thanks to Capacitor community member Matt Wyld for his feedback, especially performance testing the Fetch approach on mobile.
Reference
この問題について(JavaScriptのBase 64文字列への変換), 我々は、より多くの情報をここで見つけました https://dev.to/ionic/converting-a-base64-string-to-a-blob-in-javascript-35klテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol