tomcat 10 的 ServletFileUpload#parseRequest(request) 错误
Error in ServletFileUpload#parseRequest(request) with tomcat 10
正在开发一个简单的文件上传程序。我不得不使用 jakarta.servlet.* 类 因为我正在使用 Tomcat v10。我在 parseRequest(request) 行遇到编译时错误。
代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
try {
List<FileItem> multifiles = sf.parseRequest(request);
for(FileItem i : multifiles) {
i.write(new File("C:/Users/Luffy/Documents/FileUploadDemo/"+i.getName()));
}
response.getWriter().print("The file is uploaded");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.getWriter().print("The file is uploaded");
}
错误如下:
ServletFileUpload 类型中的方法 parseRequest(javax.servlet.http.HttpServletRequest) 不适用于参数 (jakarta.servlet.http.HttpServletRequest)
我在 google 上搜索了很多,但找不到解决方案。
请提出解决方法或可能的解决方案。提前致谢。
这是我在 Stack overflow 中的第一个 post。所以如果有的话请忽略我的错误:)
您正在尝试使用 commons-fileupload
中的 ServletFileUpload
class,它不适用于 jakarta.servlet.http.HttpServletRequest
。该库必须适应 Servlet 5.0 classes.
幸运的是,自 Servlet 3.0 (Tomcat 8.0) multipart/form-data
请求可以由 servlet 解析。您只需要:
- 向您的 servlet 添加
@MultipartConfig
注释,
- 使用
HttpServletRequest#getParts()
:
try {
final Collection<Part> parts = request.getParts();
for (final Part part : parts) {
part.write("C:/Users/Luffy/Documents/FileUploadDemo/"+part.getSubmittedFileName());
}
response.getWriter().print("The file has been uploaded successfully.");
} catch (Exception e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Upload failed.");
}
正在开发一个简单的文件上传程序。我不得不使用 jakarta.servlet.* 类 因为我正在使用 Tomcat v10。我在 parseRequest(request) 行遇到编译时错误。
代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
try {
List<FileItem> multifiles = sf.parseRequest(request);
for(FileItem i : multifiles) {
i.write(new File("C:/Users/Luffy/Documents/FileUploadDemo/"+i.getName()));
}
response.getWriter().print("The file is uploaded");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.getWriter().print("The file is uploaded");
}
错误如下:
ServletFileUpload 类型中的方法 parseRequest(javax.servlet.http.HttpServletRequest) 不适用于参数 (jakarta.servlet.http.HttpServletRequest)
我在 google 上搜索了很多,但找不到解决方案。
请提出解决方法或可能的解决方案。提前致谢。
这是我在 Stack overflow 中的第一个 post。所以如果有的话请忽略我的错误:)
您正在尝试使用 commons-fileupload
中的 ServletFileUpload
class,它不适用于 jakarta.servlet.http.HttpServletRequest
。该库必须适应 Servlet 5.0 classes.
幸运的是,自 Servlet 3.0 (Tomcat 8.0) multipart/form-data
请求可以由 servlet 解析。您只需要:
- 向您的 servlet 添加
@MultipartConfig
注释, - 使用
HttpServletRequest#getParts()
:
try {
final Collection<Part> parts = request.getParts();
for (final Part part : parts) {
part.write("C:/Users/Luffy/Documents/FileUploadDemo/"+part.getSubmittedFileName());
}
response.getWriter().print("The file has been uploaded successfully.");
} catch (Exception e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Upload failed.");
}