Base64 デコード エラー: 「入力バイト 4 の Base64 データが不正です」
base64.StdEncoding を使用して Base64 でエンコードされた文字列をデコードしようとしたとき.DecodeString(str) を使用すると、次のエラーが発生する可能性があります: 「不正なbase64」入力バイト 4 のデータ。」このエラーは、指定された入力が有効な Base64 形式ではないことを示します。
あなたの場合の問題は、Base64 エンコード自体ではなく、入力文字列にあります。純粋な Base64 文字列の代わりに、データ URI スキームをデコードしようとしています。
データ URI スキームは、Web ページ内のデータをインライン コンテンツとして表し、これに続きます。 format:
data:[
あなたの場合、入力はimage/png MIME タイプと Base64 でエンコードされたデータを含むデータ URI スキーム。デコードするには、まず Base64 部分を抽出する必要があります。
input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA" b64data := input[strings.IndexByte(input, ',')+1:] fmt.Println(b64data)
出力:
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA
これで、抽出された Base64 文字列をデコードできるようになります:
data, err := base64.StdEncoding.DecodeString(b64data) if err != nil { fmt.Println("error:", err) } fmt.Println(data)
出力:
[137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 100 0 0 0 100 8 6 0]
Data から Base64 データを抽出することによってURI スキームとデコード プロセスを実行すると、Base64 でエンコードされたコンテンツを正常にデコードできます。
以上がデータ URI をデコードするときに「入力バイト 4 に不正な Base64 データがあります」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。