java - 使用谷歌应用引擎上传图片的一步上传

标签 java android google-app-engine http-post blobstore

我正在尝试实现一个非常基本的功能,将图像从 Android、iPhone 和网络客户端上传到谷歌应用引擎。由于 this,我做了一个初始版本的实现博客:

然而,上传图片似乎总是需要两步:

  1. 使用 createUploadUrl() 获取要 POST 的初始上传 URL。我附上了我使用的代码 fragment :
    public class CreateUploadUrl extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
        String uploadURL = blobstoreService.createUploadUrl("/image/uploadImage");
        resp.setContentType("text/plain");
        resp.getWriter().println(uploadURL);
    }
}

  1. 使用您刚刚“获得”的 URL 发布图片

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        BlobKey blobKey = ParameterExtractor.getBlobParameter(req, "blob-key", blobstoreService);
        if (blobKey == null) {
            log.info("blob Id is null. POST failed");
        } else {
            log.info("ze business logic");
        }
    }

我的问题是是否可以一步完成,因为现在所有客户端都需要执行 http GET 以获取上传 URL,然后执行 http POST 以发布图像。

是不是只用一个预定义的 URL 做一个 Http POST 是不可能的。

谢谢 拉惹

最佳答案

这是可能的,但有限制。您可以通过使用(目前处于试验阶段)createNewBlobFile 在您的 servlet 中直接创建 blob 来绕过 UploadUrl 机制。应用程序接口(interface)。在您的移动应用程序中创建一个编码为 multipart/form-data 的 HTTP 请求,并教您的 servlet 如何解码此类内容(请参阅 How to upload files in JSP/Servlet?)。请注意 HTTP 请求是 limited to 32MB ;使用表单编码,您可以上传的二进制数据量将少于此。

关于java - 使用谷歌应用引擎上传图片的一步上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894895/

相关文章:

android - 如何实现全页滚动?我的错误是什么?

java - google app engine for java - 使用 java.net 时反复出现超时错误 - 这是否意味着我必须放弃 gae?

google-app-engine - 非数据库应用程序的 GAE 数据存储设置

android - 停止 Android MediaPlayer 由 WebView 中的网页自动启动

java - JTextField 的 setText(String t) 无法更改文本字段的内容

java - IntelliJ IDEA 2017.2.5 : Cannot determine embedded database driver

java - 如何在使用 "No Line Found Error"时防止 "While Loop?"

java - 创建日历 3 年

python - Google AppEngine Python Cron 作业 urllib

java - 我可以覆盖类对象的新实例吗?