2017-01-25 5 views
0

ファイル共有をネットワーク共有にプルするプログラムがあります。私はこれをシングルパートとマルチパートの両方の電子メールメッセージで処理しています。これは、ファイル名によるファイル書き込みに失敗しているPDF添付ファイルダウンローダがbase64エンコーディングで動作しない

Content-Type: application/pdf Content-Disposition: attachment; filename="=?utf-8?B?SW52b2ljZShzKS5wZGY=?=" Content-Transfer-Encoding: base64

私は最近のように表示されmutlipartを受けています。ここで

は、私はPDFを書いているコードです:

fp = open(os.path.join(path, filename), 'wb') fp.write(part.get_payload(decode=True)) fp.close()

私はその部分が正常に動作していると、それはファイルの書き込みに失敗すると思うが...私はどのようにわからないんだけどそのファイル名を読みやすいテキストに変換します。ここで私は、ファイル名を決定するために使用しているコードは次のとおりです。

filename = part.get_filename() filename_zero, fileext =os.path.splitext(filename)
filename = str(var_seq) + "_" + filename_zero + fileext

私が欠けている何にどれ洞察力は大歓迎です。

+1

Insightは:https://docs.python.org/2/library/email.header([ 'email.header.decode_headerを()']を検討してください。 html#email.header.decode_header)。代わりに:http://stackoverflow.com/questions/7406102/create-sane-safe-filename-from-any-unsafe-stringを考えてください。 –

+0

'email.header.decode_header()'は私が必要としていたものです。ありがとう@ Rob Thanks – AlliDeacon

答えて

1

email.header.decode_header()は私が必要としていたものです。本当にありがとう!

は、以下の行を追加しました:

filename = part.get_filename() if decode_header(filename)[0][1] is not None: filename = str(decode_header(filename)[0][0]).decode(decode_header(filename)[0][1]) filename_zero, fileext = os.path.splitext(filename) filename = str(var_seq) + "_" + filename_zero + fileext

関連する問題