当前位置: 首页 > 知识库问答 >
问题:

如何使用Appengine Blobstore(与Android一起使用)?

令狐建修
2023-03-14

我想通过appengine BlobStore从我的android应用程序中更新和获取图片。我有些问题。我想我不是很了解Blobstore的流程。

以下是我所做的:

在我的服务器端(在Jersey中使用java中的appengine),下面是我的webservice:

-上传Web服务:(这个功能是android直接调用的)

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadImageBis(@Context HttpServletRequest req, @Context HttpServletResponse res) throws IOException{

    BlobstoreService bs = BlobstoreServiceFactory.getBlobstoreService();
    bs.createUploadUrl("/upload");
    Map<String, List<BlobKey>> blobFields = bs.getUploads(req);
    List<BlobKey> blobKeys = blobFields.entrySet().iterator().next().getValue();
    if (blobKeys != null && !blobKeys.isEmpty()) {
        BlobKey blobKey = blobKeys.get(0);
        System.out.println("MY KEY: "+blobKey.getKeyString());
    }

    return null;
}

行“BlobStoreReservice bs=BlobStoreReserviceFactory.getBlobStoreReservice();”创建错误:必须从blob上载回调请求中调用
但经过一段时间后它被持久化(在数据存储或blobstore中),并且当我检查数据存储时,创建了一个名为:BlobStoreAdSession的新选项卡

然后当我试着用谷歌控制台的键获取图片时,我出现了这样的错误:找不到blob:blobkey:...我猜图片可能存储在数据存储而不是blobstore中??

但我认为我在上传Web服务中做错了什么。如果有人能帮我解释一下哪里出了问题,那就太好了。THX.

共有1个答案

亢雅懿
2023-03-14

GAE上的Blobupload是一个两步过程:

a.客户端请求一次性上传URL:

@GET
@Produces("text/plain")
public String uploadImageBis(@Context HttpServletRequest req, @Context HttpServletResponse res) throws IOException{
  BlobstoreService bs = BlobstoreServiceFactory.getBlobstoreService();
  return bs.createUploadUrl("/upload");
}

b.客户端将多部分数据发布到URL:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadImageBis(@Context HttpServletRequest req, @Context HttpServletResponse res) throws IOException{

  Map<String, List<BlobKey>> blobFields = bs.getUploads(req);
  List<BlobKey> blobKeys = blobFields.entrySet().iterator().next().getValue();
  if (blobKeys != null && !blobKeys.isEmpty()) {
    BlobKey blobKey = blobKeys.get(0);
    System.out.println("MY KEY: "+blobKey.getKeyString());
  }

  return null;
}
 类似资料:
  • 问题内容: 我正在设置信用卡处理程序,需要对CURL使用替代方法。当我使用测试服务器(未调用SSL URL)时,以下代码运行良好,但是现在当我在使用HTTPS的工作服务器上对其进行测试时,它失败,并显示错误消息“无法打开流”。 问题答案: 请尝试以下脚本,以查看您的php脚本是否有https包装器。 输出应该是这样的

  • 问题内容: 我想将组件与Android的新实现一起使用。但是,提供的方法仅支持旧的实现。有没有一种方法可以轻松地将a绑定到组件? 问题答案: 您必须使用它 来模拟和设置with 。否则,您将必须编写自己的适配器,以结合双方。 它的代码在Kotlin中看起来像这样

  • 问题内容: 我习惯在普通的log4j上使用。现在,我切换到,无法使附加程序正常工作。 下面的附加程序可以正常工作。但是永远不会创建的日志文件。为什么? 问题答案: 该标记缺少属性。

  • 问题内容: 我在使用Ajax和php时遇到麻烦。我正在尝试做的是调用ajax函数,该函数从表单的输入中获取值,并检查数据库中是否存在该电子邮件。这是我当前的javascript: 不幸的是,我无法戒备。在我的PHP函数中,它检查输入的是用户名还是电子邮件(仅出于我的目的,所以您知道),然后在任一列中查找它。如果找到它,则返回true,否则返回false: 所以我的问题是,ajax如何响应这些返回值

  • 问题内容: 我一直在四处搜寻,但是我不太了解ajax的工作原理。 可否请人解释这是如何工作的? 我正在尝试做的是查看document.getElementsByClassName(current)是否已更改。如果有,它将询问app.py当前的评论和标签,并在不刷新的情况下更新页面。我也不知道该怎么写才能在app.py上收到它。 我将包含我的app.py,但这不是很好。 问题答案: 通常,服务器上的

  • 问题内容: 我将使用IntelliJ Community Edition的Git版本控制来创建我打算开发的程序的分支。我正在努力使自己适应其功能,并且遇到了障碍。 我遵循网页 http://wiki.jetbrains.net/intellij/Using_Git_Locally上的说明,尽管我按其要求进行操作,但是当我到达Image5时,在Default(默认)下找到了一个空列表。 我认为这可能