- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 iOS 客户端上使用 GAE Python SDK 1.9.4 和 Google Cloud Endpoints。我们从 AWS S3 上的存储桶向我们的用户提供图像,并且通过 boto
从 iOS 到 GAE 再到 AWS 的交互没有问题。图书馆。
我们正在寻求的具体用例是允许我们的用户更新他们的头像。在 appserver 上,我们有单元测试成功地计算并从文件上传图像数据到 S3,以及它们的 base64 字符串表示,并返回 URL 以供客户端使用。文件大小从几千字节到几兆不等。单元测试涵盖了 boto Controller ,以及调用它的 endpoints.api 包装器。我们已经使用源自 python base64
的 base64 字符串进行了测试。图书馆,以及 GTLBase64
iOS 上的工具。字符串是网络安全的。在 iOS 中,我们强制图像为 160x160 JPG 并具有最大压缩率,这始终会产生大约 3K 的 base64 字符串。
这是 protopc 消息类:
class AvatarUploadRequest(messages.Message):
uid = messages.StringField(1)
avatar = messages.BytesField(2)
content_type = messages.StringField(3)
avatar
BytesField()
,将有效负载发送到 boto,然后可以在浏览器中查看 S3 托管的图像。
503 Service Unavailable
,使用我们在单元测试中使用的已知良好数据。 API 服务器正常运行,所有其他调用成功完成。
{
"error": {
"errors": [{
"domain": "global",
"reason": "backendError",
"message": ""
}],
"code": 503,
"message": ""
}
}
avatar
POST 请求正文中的有效负载消除了错误。 @endpoints-decorated 方法中的代码执行。与
avatar
有效载荷,在我们的实现上游执行失败(即方法中的任何代码都没有运行)。
BytesField()
的上限尺寸。有人提到将 Blobstore API 用于较大的文件(视频、图像等),但它不适合我们的用例;我们不想将图像数据存储在 AppEngine、数据存储或其他地方,我们只需要通过我们的应用服务器将其汇集起来并将其转发到 S3。
最佳答案
只是想跟进这个问题,我们采取了哪些措施来解决这个问题。
允许通过 Google Cloud Endpoints 上传的二进制数据似乎有一个硬性上限。我们没有深入挖掘以找到它的实现位置,相反,我们决定提取一个模块,其唯一职责是与 AWS 通信,并使用另一个框架定义新的端点。
为了争论,我们选择用 Flask 微框架包装新模块的端点,并通过 boto 库管理将二进制数据上传到 AWS。在上面的原始帖子中通过 Cloud Endpoints 失败的相同数据现在通过 Flask 可以 100% 工作。
关于python - 通过 Google Cloud Endpoints 将 UIImage 上传到 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597426/
我是一名优秀的程序员,十分优秀!