- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想使用 spark 从 html 表单上传文件。以下是我处理发布路由的 java 函数:
Spark.post("/upload", "multipart/form-data", (request, response) -> {
String location = "temporary"; // the directory location where files will be stored
long maxFileSize = 100000000; // the maximum size allowed for uploaded files
long maxRequestSize = 100000000; // the maximum size allowed for multipart/form-data requests
int fileSizeThreshold = 1024; // the size threshold after which files will be written to disk
MultipartConfigElement multipartConfigElement = new MultipartConfigElement(
location, maxFileSize, maxRequestSize, fileSizeThreshold);
request.raw().setAttribute("org.eclipse.multipartConfig",
multipartConfigElement);
Collection<Part> parts = request.raw().getParts(); //Line 50 where error is there
for (Part part : parts) {
System.out.println("Name: " + part.getName());
System.out.println("Size: " + part.getSize());
System.out.println("Filename: " + part.getSubmittedFileName());
}
String fName = request.raw().getPart("xmlfile").getSubmittedFileName();
System.out.println("Title: " + request.raw().getParameter("title"));
System.out.println("File: " + fName);
Part uploadedFile = request.raw().getPart("xmlFile");
Path out = Paths.get("temporary/" + fName);
try (final InputStream in = uploadedFile.getInputStream()) {
Files.copy(in, out);
uploadedFile.delete();
}
// cleanup
multipartConfigElement = null;
//parts = null;
uploadedFile = null;
return "OK";
});
以下是 HTML 表单:
<form class="ui fluid action input" id="fileForm" method="post" action="/sparkapp/upload" enctype = "multipart/form-data">
<input type="text" name="filePath" readonly>
<input type="file" name="xmlFile">
<button type="submit" value="Submit">
</form>
当我上传文件时,我收到 500:内部服务器错误,堆栈跟踪如下:
java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided
at org.apache.catalina.connector.Request.parseParts(Request.java:2734)
at org.apache.catalina.connector.Request.getParts(Request.java:2701)
at org.apache.catalina.connector.Request.getPart(Request.java:2885)
at org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1089)
at javax.servlet.http.HttpServletRequestWrapper.getPart(HttpServletRequestWrapper.java:362)
at com.amulya.Application$2.handle(Application.java:50)
at spark.RouteImpl$1.handle(RouteImpl.java:61)
at spark.http.matching.Routes.execute(Routes.java:61)
at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:127)
at spark.servlet.SparkFilter.doFilter(SparkFilter.java:173)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
遵循了以下问题,但答案无效: SparkJava: Upload file did't work in Spark java framework
我正在使用 eclipse IDE 和 tomcat 服务器。
请帮我解决这个问题。
最佳答案
我刚刚发现,当我使用带 spark 的 tomcat 服务器时,我设置了过滤器,即 spark.servlet.SparkFilter
.
通过this answer我发现实际上,我需要设置
allowCasualMultipartParsing="true"
在 webapp 的 <Context>
Webapp/META-INF/context.xml
中的元素或 Tomcat/conf/server.xml
这样Tomcat应该自动解析multipart/form-data
HttpServletRequest.getPart*
时请求正文或 HttpServletRequest.getParameter*
被调用,即使目标 servlet 没有用 @MultipartConfig
标记注释。
请参阅以下链接以供引用:
http://sparkjava.com/documentation.html#other-webserver
https://stackoverflow.com/a/8050589/2256258
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html
https://examples.javacodegeeks.com/enterprise-java/tomcat/tomcat-context-xml-configuration-example/
关于java - 星火Java : Unable to process parts as no multi-part configuration has been provided,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932829/
我已经在 Window 中安装了 Spark。我正在尝试从 D: 驱动器加载文本文件。 RDD 正在正常创建,但是当我对该接收错误执行任何操作时。我尝试了斜线的所有组合但没有成功 scala> val
我正在尝试使用 Spark 的 MLlib 在 Java 上实现 KMeans,我偶然发现了一个问题,那就是,尽管我导入了正确的 jar,但我的编译器无法识别这一行 // Cluster the da
在尝试使用 Databricks 提供的动手实验室执行 spark mllib ALS 时,是否有人知道此错误的可能原因? 14/11/20 23:33:38 WARN Utils: Set SPAR
DataSet 中有 firm 列,我正在向该 DataSet 添加另一列 - firm_id 示例: private val firms: mutable.Map[String, Integer]
DirectFileOutputCommitter 在 Spark 2.2.0 中不再可用。这意味着写入 S3 需要非常长的时间(3 小时对 2 分钟)。我可以通过在 spark-shell 中将 F
在 DataFrame Apache Spark 中的对象(我正在使用 Scala 接口(interface)),如果我正在迭代它的 Row对象,有没有办法按名称提取值?我可以看到如何做一些非常尴尬的
我正在尝试从此处 (Learning Spark book) 运行示例,但出现以下错误: 16/10/07 01:15:26 ERROR Executor: Exception in task 0.0
我从 GH 开发大师那里构建了 Spark 1.4,并且构建顺利。但是当我执行 bin/pyspark 时,我得到了 Python 2.7.9 版本。我该如何更改? 最佳答案 只需设置环境变量: 导出
我开始玩 Spark 2.0.1。新数据集 API 非常干净,但我在执行非常简单的操作时遇到了问题。 也许我遗漏了什么,希望有人能提供帮助。 这些说明 SparkConf conf = new Spa
我有这段代码在 scala 中运行良好: val schema = StructType(Array( StructField("field1", StringType, true),
我正在构建一个 Spark 应用程序,我必须在其中缓存大约 15 GB 的 CSV 文件。我读到了新的 UnifiedMemoryManager Spark 1.6 在这里介绍: https://0x
您好,我正在使用自定义 UDF 对每列中的每个值求平方根。 square_root_UDF = udf(lambda x: math.sqrt(x), DoubleType()) for x in f
我有一个 Apache Spark 应用程序在集群模式下运行在 YARN 集群上(spark 在这个集群上有 3 个节点)。 当应用程序运行时,Spark-UI 显示 2 个执行程序(每个运行在不同的
我有一个有效的 PostgreSQL 查询:当我在 PSQL 中复制/粘贴它时,我得到了想要的结果。 但是,当我使用 Spark SQL 运行时,它会导致 NullPointerException。
我需要使用 spark-sql 读取一个文件,该文件在当前目录中。 我使用此命令解压缩存储在 HDFS 上的文件列表。 val decompressCommand = Seq(laszippath,
提交复制并粘贴到下方的 Spark 应用程序时,我遇到了以下错误。我首先对这个问题进行了一些谷歌搜索,并确定这可能是一个签名 jar 的问题,该签名 jar 作为对我的 jar 构建过程的依赖项被加载
这个问题在这里已经有了答案: How to aggregate values into collection after groupBy? (3 个答案) Spark merge/combine a
我想通过将一个巨大的 csv 文件分割为不同的分区来优化 Spark 应用程序的运行时间,具体取决于它们的特性。 例如。我有一列带有客户 ID(整数,a),一列带有日期(月 + 年,例如 01.201
我在尝试将文件从 hdfs 读取到 Spark 时遇到错误。文件 README.md 存在于 hdfs 中 spark@osboxes hadoop]$ hdfs dfs -ls README.md
一段时间后,无法弄清楚如何在运行 spark-sql 二进制文件时识别以下错误的根本原因: 15/12/08 14:48:41 WARN NativeCodeLoader: Unable to loa
我是一名优秀的程序员,十分优秀!