2

次のコードを使用して、GAEブロブストアに保存されているJPEGファイルをバイト配列に読み戻そうとしています。

info,_  := blobstore.Stat(context,appengine.BlobKey(request.FormValue("blobkey")))
image   := make([]byte,info.Size)
reader  := blobstore.NewReader(context,appengine.BlobKey(request.FormValue("blobkey")))
n,nerr  := reader.Read(image)

画像は正しく保存されます。つまり、blobstore.Send(...)を使用して提供できます。

上記のコードは(blobデータを読み戻すという点で)機能しますが、0x0aバイトを0x0d 0x0aペアに変換します(つまり、LFをCR LFに変換します)。

Goでこの動作を回避する方法はありますか(0x0d0aを0x0aに戻すためのフィルターを作成せずに)?

編集:

問題はBlobstore.Readerにあるのではなく、開発アプリサーバーのmail.pyの添付ファイルのエンコードにあることがわかりました。

4

1 に答える 1

0

dev appserverでのメールの添付ファイル処理は、画像データを正しくエンコードしません。添付データがバイナリであることがわかっている場合、部分的な回避策は次の行を追加することです。

encoders.encode_base64(mime_attachment)

行の後

mime_attachment.set_payload(attachment.data())

ファイル内

google / appengine / api / mail.py

画像コンテンツタイプにMIMEImage添付ファイルを使用することはより良い解決策ですが、「LazyImporterオブジェクトは呼び出し可能ではありません」というエラーが発生します。

于 2012-05-29T19:19:06.563 に答える