Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Android、App engine+;数据存储_Android_Google App Engine_Google Cloud Storage - Fatal编程技术网

使用Android、App engine+;数据存储

使用Android、App engine+;数据存储,android,google-app-engine,google-cloud-storage,Android,Google App Engine,Google Cloud Storage,我正在使用Android和google app engine端点后端,用数据存储存储数据。 现在我想添加和存储用户图像。整合谷歌云存储的最佳方式是什么: 使用api中的Blob创建新端点并从端点调用云存储? Android-->-->应用引擎端点-->谷歌云存储 谷歌云存储-->应用引擎端点-->-->Android 直接从Android设备调用Google云存储而不使用端点? Android-->-->谷歌云存储 更好的选择 谢谢 只有当图像小于1MB时,选项1才起作用,因为这是base64编

我正在使用Android和google app engine端点后端,用数据存储存储数据。 现在我想添加和存储用户图像。整合谷歌云存储的最佳方式是什么:

  • 使用api中的Blob创建新端点并从端点调用云存储? Android-->-->应用引擎端点-->谷歌云存储 谷歌云存储-->应用引擎端点-->-->Android

  • 直接从Android设备调用Google云存储而不使用端点? Android-->-->谷歌云存储

  • 更好的选择


  • 谢谢

    只有当图像小于1MB时,选项1才起作用,因为这是base64编码字符串(将传递给端点方法)在数据存储中的最大大小

    我不推荐您的选项2,因为这样您将直接在客户机中存储GCS的服务帐户密钥,这将不安全(除非您不在乎)

    选项3是我所做的:

    我有一个端点方法,可以生成(或者您可以使用)。已签名的URL已计时并过期。对象名和bucket在签名的url中指定。我在Android中调用我的endpoints方法来获取签名的url,并使用
    HttpURLConnection
    将图像上传到GCS


    和我一样,当您的对象上载到GCS时,您可能需要一个回调方法。这有点复杂,但您需要在端点项目中创建一个servlet并进行相应的处理。该文档非常有帮助。

    对于选项1,我不想将其存储在数据存储中。我认为可以将来自端点的二进制图像数据直接存储在云存储中。Cient(Android)调用我的应用程序的端点将数据上传到服务器。然后端点将数据上传到GCS存储桶。选项3:如何将数据从客户端传输到服务器?使用来自客户端或通过端点的已签名URL?图像配置文件应该可以从上传者的朋友中读取。签名URL是这种情况下的解决方法吗?我的场景如下:应用程序的每个用户都有一个帐户。帐户数据存储在数据存储中。用户现在应该可以上传个人资料图像。图像应存储在地面军事系统上。由于身份验证,上载应通过端点。对于下载,url应该是可用的,因此图像不能通过端点下载。在我的应用程序中,每个连接到上传程序的用户都应该可以永久访问url。端点方法中的二进制参数是否有1 MB的限制?在POST请求中使用序列化对象作为参数应该是这样的:公共类映像实现可序列化的{private byte[]data;公共映像(){super();}public byte[]getData(){return data;}public void setData(byte[]data){this.data=data;}}方法:@ApiMethod(name=“endpoint.uploadImage”,httpMethod=httpMethod.POST)public boolean uploadImage(User-User,Image)抛出OAuthRequestException{…}只是想在这里插话说,上的文档是一个很好的开始,可以了解解决方案的可能性,并且您还可以在上找到大量示例。