google-app-engine - 戈朗 : emailing an image stored as a Google Appengine blobstore blob

标签 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,而在于开发应用服务器上 mail.py 中的附件编码。

最佳答案

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

encoders.encode_base64(mime_attachment)

行后

mime_attachment.set_payload(attachment.data())

在文件中

google/appengine/api/mail.py

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

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

相关文章:

reactjs - axios.post请求获取404

google-app-engine - 云端点正在提供缓存响应

pointers - go - 写入接口(interface)的函数{}

class - Go,在 struct 中如何引用当前对象(就像 java 和 c++ 中的这样)?

go - 使用 go get 获取第三方许可证

go - 通过将空结构传递到 channel Go 来停止循环

google-app-engine - 还有其他类型的 "Task Queue"API 吗?

python - 谷歌应用引擎,静态文件的最大数量?

google-app-engine - 将 Google App Engine 与我的 Dreamhost 注册域一起使用

google-app-engine - gae cloud sql事件连接未关闭(保持实例运行)