我正在尝试使用以下代码将存储在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,而在于开发应用程序服务器上mail.py中的附件编码。

最佳答案

开发应用服务器上的邮件附件处理未正确编码图像数据。如果已知附件数据是二进制的,则部分解决方法是添加以下行:

encoders.encode_base64(mime_attachment)

下线后
mime_attachment.set_payload(attachment.data())

在文件中



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

关于google-app-engine - golang : emailing an image stored as a Google Appengine blobstore blob,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10776103/

10-12 22:41