2016-06-24 3 views
0

BLOBとして保存されたPDFをデコードして、.pdf拡張子のファイルに保存しようとしました。 results [0] [1]は、データベースクエリから抽出されたBLOBデータを持ちます。base64エンコーディングのデコード中に不正なパディングエラーが発生しました

  blob_val=results[0][1] 
     if len(blob_val) % 4 != 0: 
      while len(blob_val) % 4 != 0: 
       blob_val = blob_val + b"=" 
      decod_text = base64.b64decode(blob_val) 
     else: 
      decod_text = base64.b64decode(blob_val) 

イベントパディングエラーを修正するために末尾に=を追加しましたが、まだ間違ったパディングエラーが表示されています。 「=」で修正しても、なぜこのエラーが表示されるのですか?

答えて

0

各base64 charは6ビットをエンコードします。これが動作するためには、合計バイト数は4でなく3で割り切れる必要があります。

この仕事(と少し簡略化すること)する必要があります

blob_val = results[0][1] 

    # If the length is divisible by 3, the 'while' will never 
    # be entered, so no point in doing the additional 'if' above. 
    while len(blob_val) % 3 != 0: 
     blob_val += b"=" 

    decod_text = base64.b64decode(blob_val) 
+0

なぜそれが3でありますか?私が試してみました。働いていない – pksree

関連する問題