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

如何按名称检索blobstore文件

羊浩广
2023-03-14

我写了下面的代码:

                     FileService fileService = FileServiceFactory
                 .getFileService();

                 // Create a new Blob file with mime-type "text/plain"
                 AppEngineFile file = fileService.createNewBlobFile(
                 "image/jpeg", name);

                 if(null!=file)
                 log.warn(file.toString());

                 FileReadChannel readChannel =
                 fileService.openReadChannel(
                 file, true);

                 // Again, different standard Java ways of reading from
                 // the
                 // channel.
                 BufferedReader reader = new BufferedReader(Channels
                 .newReader(readChannel, "UTF8"));
                 String line = reader.readLine();

                 resp.setContentType("text/plain");
                 resp.getWriter().println(line);

                 readChannel.close();

但不幸的是,它给了我以下例外:

servlet com.google.appengine.api.files中出现未捕获的html" target="_blank">异常。com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImple.java:597)中的FinalizationException位于com.goole.appeninge.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:574com.google.appengine.api.files.FileServiceImpl.openForRead(FileServiceImple.java:447)位于com.goole.appeninge.api.files.FileServiceImpl.openReadChannel(FileServiceimple.java:202)位于com.myfileshost.MyfileshostServlet.doGet(myfileshost servlet.java:362),位于javax.servlet.HttpServlet.service(HttpServelt.java:617),位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)位于org.motbay.jetty.servlet.ServerletHandler$CachedChain.doFilter(ServletHandler.java:1166位于org.motrbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)的com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFisher(TransactionCollanupFilter.java:43)位于org.mortbay.jetty.servlet的org.mortbay.jetty.servlet.ServletHandler.handler(ServletHandler.java:388)位于org.motbay.jetty.security.SecurityHandler.handler(SecurityHandler.java:216)位于org.portbay.jetty.servlet.SessionHandler.句柄(SessionHandler.java:182)位于org.mortbay.kitty.handler.ContextHandler.(ContextHandller.java:765)位于org.mirtbay.getty.webapp.WebAppContext.handle(WebAppContext.java:418)org.motrbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnect.java:923位于com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequest Parser.java:76)的org.motrbay.jetty.HttpConnection.handle(HttpConnection.java:404)的com.googel.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest位于com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInInInContext(TraceContact.java:449)的com.googe.tracing.StraceContext$TraceContinRunnable$1.run(TraceContext.java:455)的com.google.tracing.CtraceContextcom.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContact.java:325),位于com.goole.tracing.StraceContext$TraceContContextRunnable.run(TraceContext.java:453),位于java.lang.Thread.run,位于com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run

共有1个答案

李建中
2023-03-14

当通过GAE FileService创建文件时,必须先将其定稿,然后才能读取。

OpenReadChannel(..) 的 Javadoc 明确指出,如果文件未最终确定,此方法将引发终结异常

以下是有关如何创建文件,完成文件然后从中读取的完整示例:https://developers.google.com/appengine/docs/java/blobstore/overview#Writing_Files_to_the_Blobstore

 类似资料:
  • 我知道有可能通过名字得到一个类,使用 是否可以通过名称检索注释?我尝试了这个: 然后将c转换为

  • 我试着做 但返回的资源不包含任何属性。 我怎么才能正确地做这件事呢?

  • 问题内容: 我有: 我得枚举名称(,,只能使用IDS(40,60,80))。我该怎么做? 问题答案: 在您要搜索的静态方法中创建一个静态方法(隐式方法/成员,不知道确切是哪个方法)并返回相应的值。对于该方法找不到匹配值的情况,应创建一个特殊的条目,例如,可以返回。这样,您不必返回,这总是一个坏主意。 顺便说一句-您的代码似乎是错误的。之后的括号似乎不属于那里。

  • 问题内容: 我有一个像这样开始的XML文件: 我将不得不打开许多这些文件。它们中的每一个都有不同的名称空间,但一次只能有一个名称空间(我永远不会在一个xml文件中找到两个定义的名称空间)。 使用XPath,我希望有一种自动的方法将给定的名称空间添加到名称空间管理器中。到目前为止,我只能通过解析xml文件来获取名称空间,但是我有一个XPathNavigator实例,并且它应该具有一种不错且干净的方式

  • 我需要知道哪些电子邮件失败(即有一个MailException)并最终告诉用户与失败的电子邮件相关联的附件的名称。如何从异常中检索附件名称?到目前为止,我已经