【问题标题】:Inserting a Blob in Blobstore using a url使用 url 在 Blobstore 中插入 Blob
【发布时间】:2012-08-10 19:40:07
【问题描述】:

您好,我是谷歌应用引擎的新手。我通过这个tutorial

我成功地运行了这些示例项目。在此我必须上传一个文件,然后它返回相同的文件。但我使用此 url 给出了一个 url,我必须将文件上传到 blobstore。然后再次下载它。 任何人都可以帮助如何通过网址上传文件。 这是 index.jsp 文件的代码

<%@ page import="com.google.appengine.api.blobstore.BlobstoreServiceFactory" %>
<%@ page import="com.google.appengine.api.blobstore.BlobstoreService" %>

<%
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
%>


<html>
    <head>
        <title>Upload Test</title>
    </head>
    <body>
        <form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data">
            <input type="text" name="foo">
            <input type="file" name="myFile">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

这里是serve.java代码

package org.ritesh;
import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;

public class Serve extends HttpServlet {
    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws IOException {
        BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
        blobstoreService.serve(blobKey, res);
    }
}

UploadServlet 代码在这里

package org.ritesh;

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;

public class UploadServlet extends HttpServlet {

    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();


    public void doPost(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {

        Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
        BlobKey blobKey = blobs.get("myFile");

        if (blobKey == null) {
            res.sendRedirect("/");
        } else {
            res.sendRedirect("/serve?blob-key=" + blobKey.getKeyString());
        }
    }
}

运行良好,请提出任何修改建议,以便通过 url 上传文件

【问题讨论】:

    标签: java google-app-engine blobstore


    【解决方案1】:

    如果您希望用户将文件发布到您自己的 URL,那么您需要使用 Files API 写入 blobstore。

    但是,如果可以的话,最好使用您已有的处理上传的方法。它允许上传更大的文件,并且由于上传由 Google 基础架构而不是您的应用程序实例处理,因此很可能更高效。

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 2014-10-21
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2012-03-14
      • 2020-07-08
      相关资源
      最近更新 更多