将图像从Android发送到App Engine端点

时间:2014-06-30 06:23:18

标签: java android google-app-engine

我正在使用App Engine的云端点,我有一个Android客户端。除了将图像从Android客户端发送到端点之外,我能够正确地完成所有操作。

我使用BytesField作为我的端点,但在Android中,它显示为String(params只接受String)。我手机里有一个Drawable,我想发送它。

    REGISTER_RESOURCE = endpoints.ResourceContainer(
            message_types.VoidMessage,
            username=messages.StringField(1, variant=messages.Variant.STRING, required=True),
            password=messages.StringField(2, variant=messages.Variant.STRING, required=True),
            email=messages.StringField(3, variant=messages.Variant.STRING, required=True),
            phone=messages.StringField(4, variant=messages.Variant.STRING, required=True),
            gender=messages.StringField(5, variant=messages.Variant.STRING, required=True),
            location=messages.StringField(6, variant=messages.Variant.STRING, required=True),
            picture=messages.BytesField(7, variant=messages.Variant.BYTES)
            )

    @endpoints.method(REGISTER_RESOURCE, LoginUser,
                      path='register', http_method='POST',
                      name='login.register')
    def validate_register(self, request):
        ...

我尝试通过这样做将我的Drawable转换为String:

        // convert image to byte array and encode to base 64
        Bitmap bitmap = ((BitmapDrawable) photo).getBitmap();
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitmapData = stream.toByteArray();
        String encodedImage = Base64.encodeToString(bitmapData, Base64.DEFAULT);
        validateRegister.setPicture(encodedImage);

但它不起作用。我试着查看encodedImage的值,它是一个非常长的字符串。

我打算将Drawable从Android安装到服务器,然后将其存储在数据存储区(db.Model)BlobProperty中。

0 个答案:

没有答案