使用BlobInfo以编程方式恢复BlobStore中上传的blob的ServingUrl



我想使用BlobInfo实体恢复BlobStore中上传的blob的ServingUrl

我在My doGet()方法中的代码是:

        ImagesService imagesService = ImagesServiceFactory.getImagesService();
        Iterator<BlobInfo> iterator = null;
        iterator = new BlobInfoFactory().queryBlobInfos();
        while (iterator.hasNext()) {
            if(iterator.next().getFilename().equals("test.png"))
            { resp.getWriter().println(iterator.next().getBlobKey()) ;//  the result is  <BlobKey: aKQyp27ZfDgvEdPE8QvMAQ>
             resp.getWriter().println(iterator.next().getFilename());//the result is test.png
            BlobKey bk=iterator.next().getBlobKey();
            String urlStr=imagesService.getServingUrl(ServingUrlOptions.Builder.withBlobKey(bk));
            resp.getWriter().println(urlStr);
            }
        }

我得到这个错误:

HTTP ERROR 500

访问/注册问题。原因:

INTERNAL_SERVER_ERROR
造成

:

java.util.NoSuchElementExceptioncom.google.appengine.api.datastore.QueryResultIteratorImpl.next (QueryResultIteratorImpl.java: 75)在com.google.appengine.api.datastore.QueryResultIteratorImpl.next (QueryResultIteratorImpl.java: 26)接下来com.google.appengine.api.blobstore.BlobInfoFactory 1.美元(BlobInfoFactory.java: 108)接下来com.google.appengine.api.blobstore.BlobInfoFactory 1.美元(BlobInfoFactory.java: 100)com.EnrollementFinaleServlet.doGet (EnrollementFinaleServlet.java: 135)javax.servlet.http.HttpServlet.service (HttpServlet.java: 617)javax.servlet.http.HttpServlet.service (HttpServlet.java: 717)org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java: 511)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1166)com.google.appengine.api.socket.dev.DevSocketFilter.doFilter (DevSocketFilter.java: 74)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)com.google.appengine.tools.development.ResponseRewriterFilter.doFilter (ResponseRewriterFilter.java: 127)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)在com.google.appengine.tools.development.HeaderVerificationFilter.doFilter (HeaderVerificationFilter.java: 34)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter (ServeBlobFilter.java: 63)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java: 43)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java: 125)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest (DevAppServerModulesFilter.java: 366)com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest (DevAppServerModulesFilter.java: 349)com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter (DevAppServerModulesFilter.java: 116)org.mortbay.jetty.servlet.ServletHandler CachedChain.doFilter美元(ServletHandler.java: 1157)org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java: 388)org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java: 216)org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java: 182)org.mortbay.jetty.handler.ContextHandler.__handle (ContextHandler.java: 765)org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java)org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java: 418)com.google.appengine.tools.development.DevAppEngineWebAppContext.handle (DevAppEngineWebAppContext.java: 98)org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java: 152)com.google.appengine.tools.development.JettyContainerService ApiProxyHandler.handle美元(JettyContainerService.java: 490)org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java: 152)org.mortbay.jetty.Server.handle (Server.java: 326)org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java: 542)org.mortbay.jetty.HttpConnection RequestHandler.headerComplete美元(HttpConnection.java: 923)org.mortbay.jetty.HttpParser.parseNext (HttpParser.java: 547)org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java: 212)org.mortbay.jetty.HttpConnection.handle (HttpConnection.java: 404)org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java: 409)org.mortbay.thread.QueuedThreadPool PoolThread.run美元(QueuedThreadPool.java: 582)

由Jetty驱动://

如果你能帮助我,我将非常感激。

问题解决了,原来是这两行造成的:

resp.getWriter().println(iterator.next().getBlobKey());
resp.getWriter().println(iterator.next().getFilename());

最新更新