Base64をファイルにデコードする方法
Base64文字列をダウンロード可能なファイルに変換する方法を解説。JavaScript、Python、Node.jsでのBase64からバイナリへのデコード手順と実例を紹介します。
Decoding
詳細な説明
Base64をファイルにデコードする処理は、エンコードの逆です。Base64文字列を受け取り、生のバイナリバイトに変換し、そのバイト列をファイルとして書き出します。APIやデータベース、JSONペイロードを通じてBase64として送信されたファイルデータを受け取った際によく必要になります。
ブラウザでの処理(ダウンロードを実行):
function downloadBase64File(base64Data, fileName, mimeType) {
const byteCharacters = atob(base64Data);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
const blob = new Blob([byteArray], { type: mimeType });
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = fileName;
link.click();
URL.revokeObjectURL(link.href);
}
重要なステップは、デコードされた文字列をBlobに渡す前に Uint8Array に変換することです。デコードされた文字列を直接Blobコンストラクタに渡すと、UTF-8テキストとしてエンコードされ、バイナリデータが破損します。
Node.jsの場合:
const fs = require("fs");
const base64Data = "iVBORw0KGgo..."; // your Base64 string
const buffer = Buffer.from(base64Data, "base64");
fs.writeFileSync("output.png", buffer);
Pythonの場合:
import base64
with open("output.png", "wb") as f:
f.write(base64.b64decode(encoded_string))
よくある注意点:
- Base64文字列に
data:image/png;base64,のようなdata URIプレフィックスが含まれている場合、デコード前にそのプレフィックスを削除する必要があります。カンマの後の部分のみが実際のBase64データです。 - ディスクに書き込む際は常にバイナリ書き込みモード(Pythonでは
"wb"、Node.jsではエンコーディングオプションなし)を使用してください。テキストモードでは一部のプラットフォームでファイルが破損します。 - デコード後のファイルはサイズを確認し、開いて検証してください。破損したBase64文字列(途中で切れたものや不正な文字を含むもの)は、エラーを投げずに壊れたファイルを生成することがあります。
ユースケース
JSON形式でドキュメントデータをBase64エンコードして返すCRM APIから、PDF添付ファイルを復元する場合に使用します。