Ошибка в ServletFileUpload#parseRequest(запрос) с 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");
}
Ошибка выглядит следующим образом:
Метод parseRequest (javax.servlet.http.HttpServletRequest) в типе ServletFileUpload неприменим для аргументов (jakarta.servlet.http.HttpServletRequest)
Я много искал в Google, но не нашел решения.
Предложите обходной путь или возможное решение. Заранее спасибо.
Это мой первый пост в Stack overflow. Так что игнорируйте мои ошибки, если они есть :)
2 ответа
Вы пытаетесь использовать ServletFileUpload
класс от
commons-fileupload
, который не работает с
jakarta.servlet.http.HttpServletRequest
. Библиотека должна быть адаптирована для работы с классами Servlet 5.0.
К счастью, поскольку Servlet 3.0 (Tomcat 8.0)
multipart/form-data
запросы могут быть проанализированы сервлетом. Вам просто необходимо:
- Добавить
@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.");
}
protected void doPost(запрос HttpServletRequest, ответ HttpServletResponse) выдает ServletException, IOException {
try {
Collection<Part> parts = request.getParts();
for (Part part : parts) {
System.out.println(part.getSubmittedFileName());
part.write("c:/images/"+part.getSubmittedFileName());
}
response.getWriter().print("The file has been uploaded successfully.");
} catch (Exception e) {
response.sendError(response.SC_INTERNAL_SERVER_ERROR, "Upload failed.");
}
}
Я также реализую это, он работает отлично.