我正在尝试使用以下代码将存储在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中有附件编码。
答案 0 :(得分:0)
dev appserver上的邮件附件处理无法正确编码图像数据。如果已知附件数据是二进制,则部分解决方法是添加以下行:
encoders.encode_base64(mime_attachment)
行后
mime_attachment.set_payload(attachment.data())
文件中的
谷歌/应用服务引擎/ API / mail.py
对图像内容类型使用MIMEImage附件将是更好的解决方案,但会导致“LazyImporter对象无法调用”错误。