JavaScript のブロブ
この記事では、Blob
オブジェクトについて学び、それが JavaScript ソース コードでどのように機能するかを見ていきます。 例を使用して、Blob が JavaScript でファイル データを保持する方法を確認します。
JavaScript のブロブ
JavaScript では、Blob を使用して、ファイルに格納されたオブジェクトとしてデータを保持します。 単純にデータをバイトのグループに保持し、単純なファイルのように独自のサイズを持ちます。
Blob のサイズとブラウザーの機能に応じて、Blob データはメモリとファイル システムに格納されます。 Blob のコンテンツを配列バッファーとして簡単に読み取ることができるため、Blob はデータをバイナリ形式で格納するのに適しています。
Blob のコンテンツを表示するには、HTML の <a>
、<img>
、またはその他の要素タグの URL として Blob を簡単に使用できます。
JavaScript での Blob
オブジェクトの基本的な構文は次のとおりです。
var myBlob = new Blob(['Content of Blob'], {type: 'text/plain'});
コード例:
Blob は、Blob URL が指す createObjectURL()
オブジェクトを使用して取得できます。
<!DOCTYPE html>
<html>
<head>
<title>
JavaScript Blob
</title>
</head>
<body>
<script>
let blobContent = new Blob(["DelftStack is a best website to learn programming!"],
{ type: 'text/plain' }); //blob file content and type
link.href = URL.createObjectURL(blobContent);
</script>
<h1 style="color:blueviolet">DelftStack Learning</h1>
<h3>JavaScript Create Blob Object and Download File</h3>
<p>Click on link to to download the file</p>
<a download="dummyFile.txt" href='#' id="link">Download File</a> //file name
</body>
</html>
出力:
上記の HTML ソースで示したように、<script></script>
タグ内に Blob
オブジェクト blobContent
を作成しました。 ファイルのコンテンツとコンテンツ タイプを定義しました。
createObjectURL()
を使用して blobContent
を URL として取得し、href
にリンクします。 #href='#'
と id=link
のアンカー タグを使用して、ファイル dummy.txt
をダウンロードしました。
上記のソースを HTML の拡張子を付けて保存し、ブラウザーで開いてから、ダウンロード ファイルのリンクをクリックして、ダウンロードを表示できます。 テキストファイルdummyFile.txt
があります。
JavaScript での Blob の利点
以下に、JavaScript で Blob
オブジェクトを使用する利点をいくつか示します。
- ブロブは簡単に参照できます。
- より大きなバイナリ データ ファイルをデータベースに追加するには、ブロブが、大きなバイナリ データ ファイルを追加するための最適なオプションです。
- Blob を使用しながら、アクセス権を簡単に設定できます。
- データベースのバックアップには、ブロブの使用中のすべてのデータが含まれます。
Base64 へのブロブ
文字列ベースのデータをサーバーにアップロードする際に、JavaScript ファイル オブジェクトまたは Blob を Base64 文字列に変換すると便利です。 JavaScript を使用して、Base64 文字列と DataURL
をファイル オブジェクトから変換できます。
Blob を Base64 でエンコードされた文字列に変換できます。そのエンコードは、バイナリ データを文字列として表します。 そして、このエンコーディングを data-urls
で使用できます。
基本的な構文:
const convertBlobToBase64 = async (blob) => { // blob data
const reader = new FileReader();
let result = reader.readAsDataURL(blob);
}
ブロブから画像へ
JavaScript を使用して、画像または画像部分の Blob を作成できます。 canvas
要素を使用して、画像やそのパーツの作成などの画像操作を行います。
基本的な構文:
let myblob =
await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
BLOB から配列バッファーへ
任意のバッファー ソースを含め、Blob コンストラクターを使用すると、あらゆるものから Blob を生成できます。 blob.arrayBuffer()
を使用して、Blob から最下位レベルの配列バッファーを生成できます。
基本的な構文:
const mybufferPromise = await myblob.arrayBuffer();