我写了以下代码:
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();
但不幸的是,它给了我以下例外:
来自 com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:597) 的 com.google.appengine.api.files.FileServiceImpl.makeSyncCall 的 servlet com.google.appengine.api.files.FinalizationException 未捕获的异常(FileServiceImpl.java:574) 在 com.google.appengine.api.files.FileServiceImpl.open(FileServiceImpl.java:496) 在 com.google.appengine.api.files.FileServiceImpl.openForRead(FileServiceImpl.java:456) 在com.google.appengine.api.files.FileServiceImpl.openForRead(FileServiceImpl.java:447) 在 com.google.appengine.api.files.FileServiceImpl.openReadChannel(FileServiceImpl.java:202) 在 com.myfileshost.MyfileshostServlet.doGet( MyfileshostServlet.java:362) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 在 javax.servlet.http.HttpServlet。service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com .google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.apphosting.runtime.jetty .SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java :43) 在 org.mortbay.jetty.servlet 的 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)。ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org .mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 在 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle (AppVersionHandlerMap.java:249) 在 org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在 org.mortbay.jetty.Server.handle(Server.java:326) 在 org.mortbay.jetty。 com.google.apphosting.runtime.jetty.RpcRequestParser 的 org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 的 HttpConnection.handleRequest(HttpConnection.java:542)。在 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135) 在 com.google.org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 的 parseAvailable(RpcRequestParser.java:76) .apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:446) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run( TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext $AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google。tracking.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 在 java.lang.Thread.run(Thread.java:679)