Jetty 11 和 commons-fileupload

问题描述 投票:0回答:2

我正在将 Jetty9 更新到 Jetty11。我将包从 javax.servlet 更新为 jakarta.servlet,因为 servlet 5.0 是 Jetty11 的先决条件。但问题是当我使用 commons-fileupload`-1.4.jar 时,它仍然使用 java.servlet 包。

javax.servlet.http.HttpServletRequest.ServletFileUpload.isMultipartContent(request)

上述方法需要来自 java.servlet 包的参数。

commons-fileupload 的最新版本 - https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22commons-fileupload%22%20AND%20g%3A%22commons-fileupload%22

我们有办法解决这个问题吗?

java jetty apache-commons apache-commons-fileupload
2个回答
6
投票

commons-fileupload
从 Servlet 3.1 开始不再需要。

事实上,实际上不建议将

commons-fileupload
与支持 Servlet 规范 3.1(或更高版本)的容器结合使用。

自 2018 年以来甚至没有发布过

commons-fileupload
,也没有支持 Servlet 3.1 或更高版本的版本(
commons-fileupload
的最后一个版本支持 Servlet 2.4 及更早版本)

为什么?

自 3.1 起,Multipart 功能就内置于 Servlet 规范中。

现在所有支持Servlet 3.1的服务器都支持分段文件上传。

其中包括 Jetty 9。

在代码中使用

HttpServletRequest.getPart()
API。 您可以通过
@MultipartConfig
注释和/或
<multipart-config>
 中的 
WEB-INF/web.xml

描述符元素进行配置

参见:https://docs.oracle.com/javaee/7/tutorial/servlets011.htm

另请参阅过去关于这些功能的答案。


0
投票

Apache 发布了与新 API 兼容的项目 commons-fileupload2-jakarta。

作为参考,请在此处找到新的 Apache Fileupload commons 版本 2 的提交 -> https://github.com/talenteca/olon-web-framework/commit/4e7a7de8059cf8250024957f7f42c7f619a69dfe

重要提示: 请使用标准的新 Servlet API 5 上传接口,如之前的评论...只有当您有非 servlet 案例或上传程序的一些编程动态配置时才使用 Apache 的这个低级公共库(注释不擅长)所有这些都是为了使用动态值,并且使用 XML 不可能是一个可行的选择)...因为在 Olon Web Framework 中,我们使用一个过滤器来尝试自动化一切,包括动态配置的文件上传支持,而新的 Apache commons 只是非常适合。

© www.soinside.com 2019 - 2024. All rights reserved.