gpt4 book ai didi

java - 如何将位图从 Android 流式传输到 Google App Engine Servlet?

转载 作者:行者123 更新时间:2023-12-02 00:22:49 25 4
gpt4 key购买 nike

我为这个问题苦苦挣扎了几天,你是我解决这个问题的最后机会。

目标:

将位图从 Android 客户端上传到 Google 应用引擎并将其保存在数据存储区中。

  • 我使用序列化将对象从客户端传输到服务器,反之亦然。

我尝试过的事情:

  • 发送位图
    • 但是我得到了java.io.NotSerializedException: android.graphics.Bitmap
  • 然后我尝试在客户端从位图 Blob 创建,如下所示:

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
    Byte[] bArray = bos.toByteArray();
    Blob blob = new Blob(bArray);

    但在客户端,我没有 Google 应用程序引擎类(用于 Blob),因此我尝试通过提取特定类来暴力破解它,但它产生了新问题。

所以我想问我可以从哪个方向来解决这个问题。
谢谢。

最佳答案

一些注释:

  1. 不要使用 Java 序列化在 JVM 之间传输数据。 Java 序列化没有标准化,并且不能保证 JVM 之间(甚至版本之间)兼容。

  2. 要发送二进制数据,最好使用 HTTP POST 并适当设置 Content-Type(例如 application/octet-stream)。

因此,要完成这项工作,请执行以下操作:

  1. 创建一个处理 POST 并获取二进制数据的 Servlet。使用servletRequest.getInputStream()获取二进制数据。

  2. 使用 Blobstore FileService API将数据保存到 blobstore。

  3. 在 Android 端使用 http client发出 POST 请求并向其中添加位图的二进制数据。如果您需要添加一些元数据,请使用 Http header 。

关于java - 如何将位图从 Android 流式传输到 Google App Engine Servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10622005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com