-2

为什么在尝试将图像加载到 java 数据库时会出现此错误?

这是代码:

        boolean estado = false;

            ArrayList<String> lista = new ArrayList<>();
            try {
                FileItemFactory file = new DiskFileItemFactory();
                ServletFileUpload fileUpload = new ServletFileUpload(file);
                List items = fileUpload.parseRequest((RequestContext) request);
                for (int i = 0; i < items.size(); i++) {
                    FileItem fileItems = (FileItem) items.get(i);

                    if (!fileItems.isFormField()) {
                        File f = new File("C:\\images\\" + fileItems.getName());
                        fileItems.write(f);
                        dtoFotos.setRuta(f.getAbsolutePath());
                    } else {
                        lista.add(fileItems.getString());
                    }
                }

                estado = daoFotos.insertarFoto(dtoFotos);

            } catch (Exception e) {
                System.out.println(e);
                request.setAttribute("message", e);
            }

        

我收到了这个错误:

java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade 不能转换为 org.apache.tomcat.util.http.fileupload.RequestContext

我该如何解决这个问题?

4

1 回答 1

0
  1. 根据ServletFileUploadjavadoc没有必要强制request转换 to RequestContext,因为request实现RequestFacadeHttpServletRequest
  2. 此外,无需将文件项转换为FileItem,而是应指定类型并for-each应使用循环:
List<FileItem> items = fileUpload.parseRequest(request);
for (FileItem fileItems : items) {
    if (!fileItems.isFormField()) {
        File f = new File("C:\\images\\" + fileItems.getName());
        fileItems.write(f);
        dtoFotos.setRuta(f.getAbsolutePath());
    } else {
        lista.add(fileItems.getString());
    }
}
于 2021-07-25T15:49:55.087 回答