我使用Android与谷歌应用程序引擎 endpoints 后端存储数据与数据存储区 . 现在我想添加和存储用户图像 . 集成Google Cloud 存储的最佳方式是什么:
-
在api中创建一个带有blob的新 endpoints ,并从 endpoints 调用 Cloud 存储? Android - > - > App Engine endpoints - > Google Cloud 存储Google Cloud 端存储 - > App Engine endpoints - > - > Android
-
直接从没有 endpoints 的Android设备调用Google Cloud 端存储? Android - > - > Google Cloud 存储
-
更好的选择?
谢谢!
1 回答
您的选项1仅在图像小于1MB时才有效,因为这是base64编码字符串的数据存储区中的最大大小(您将传递给 endpoints 方法)
您的选项2我不建议,因为那样您将直接在客户端存储服务帐户密钥到GCS,这不安全(除非您不在乎) .
选项3是我做的:
我有一个生成signed url的 endpoints 方法(或者你可以使用resumable url) . 已签名的网址已定时并过期 . 对象名称和存储桶在签名的URL中指定 . 我在Android中调用我的 endpoints 方法来获取签名的URL并使用
HttpURLConnection
将图像上传到GCS .像我一样,当您的对象上传到GCS时,您可能需要一个回调方法 . 这有点复杂,但您需要在Endpoints项目中创建一个servlet并进行相应的处理 . 该文档对Object Change Notification非常有帮助 .