golang:通过电子邮件发送存储为Google Appengine blobstore blob的图像

时间:2012-05-27 18:03:25

标签: google-app-engine go

我正在尝试使用以下代码将存储在GAE blobstore中的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,而在dev appserver上的mail.py中有附件编码。

1 个答案:

答案 0 :(得分:0)

dev appserver上的邮件附件处理无法正确编码图像数据。如果已知附件数据是二进制,则部分解决方法是添加以下行:

encoders.encode_base64(mime_attachment)
行后

mime_attachment.set_payload(attachment.data())
文件中的

  

谷歌/应用服务引擎/ API / mail.py

对图像内容类型使用MIMEImage附件将是更好的解决方案,但会导致“LazyImporter对象无法调用”错误。