【问题标题】:Uploading a small .txt file and reading its line in Java Google App Engine上传一个小的 .txt 文件并在 Java Google App Engine 中读取它的行
【发布时间】:2016-01-20 17:18:48
【问题描述】:

我正在尝试上传一个只有几行的小 txt 文件并在我的 rest 应用程序中读取它。我可以在我的本地机器上使用 Jetty 服务器上的 GAE (1.9.25) 运行时让它工作。但是,当我将其部署到云端并尝试上传文件时,它会引发运行时异常,如下所示。

请注意,我尚未启用计费或 Blob 存储。并且异常在这些行中没有说明任何内容。所以我猜它可能与它无关。 因为我没有保存文件,只用于读取它并且没有写入操作.. 应用引擎是否支持此功能?

    Uncaught exception from servlet
javax.servlet.UnavailableException: java.lang.NoSuchMethodException: com.sun.jersey.multipart.impl.MultiPartReaderClientSide.<init>()
    at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:458)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:206)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:179)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:457)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:230)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:235)
    at java.lang.Thread.run(Thread.java:745)

下面是我的 HTML、Rest Controller 和 Web.xml

HTML

<form action="rest/locality/upload" method="post"
    enctype="multipart/form-data;charset=UTF-8">
    <p>
        Select a new file : <input type="file" name="file" />
    </p>
    <input type="submit" value="Upload File" />
</form>

休息控制器

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String uploadFile(@FormDataParam("file") InputStream fis) {

    try (BufferedReader br = new BufferedReader(new InputStreamReader(fis))) {
        String strLine = null;

和 Web.xml

<servlet-name>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.smart.win.controller</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature
        </param-value>
    </init-param>

希望我提供了足够的信息

【问题讨论】:

  • 反对者.. 想发表评论吗?为什么对这个问题投反对票。?如果需要,我可以提供任何信息..

标签: java google-app-engine file-upload multipartform-data


【解决方案1】:
猜你喜欢
  • 2012-08-31
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 2012-10-05
  • 2013-01-17
  • 2013-01-26
相关资源
最近更新 更多