错误代码
C:\Users\ZRich\Documents\Code\Java\workspace_idea\Java\JavaWeb_Code_IO\src\main\java\top\qaqaq\P215\UploadServlet.java:69:30
java: 无法访问javax.servlet.http.HttpServletRequest
找不到javax.servlet.http.HttpServletRequest的类文件
原因
项目引用了commons-fileupload-1.4.jar包,但commons-fileupload-1.4.jar包比较老,不支持javax更名后的jakarta,所以报错
//1 先判断上传的数据是否是多段数据(只有是多段的数据,才是文件上传的)
if (ServletFileUpload.isMultipartContent((RequestContext) req)) {
//创建FileItemFactory工厂实现类
FileItemFactory fileItemFactory = new DiskFileItemFactory();
// 创建用于解析上传数据的工具类ServletFileUpload类
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
// 解析上传的数据,得到每一个表单项FileItem
try {
List<FileItem> list = servletFileUpload.parseRequest((RequestContext) req);
// 循环判断,每一个表单项,是普通类型,还是上传的文件
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
// 普通表单项
System.out.println("表单项的name属性值:" + fileItem.getFieldName());
// 参数UTF-8 解决乱码问题
System.out.println("表单项的value属性值:" + fileItem.getString("UTF-8"));
} else {
// 上传的文件
System.out.println("表单项的name属性值:" + fileItem.getFieldName());
System.out.println("上传的文件名:" + fileItem.getName());
fileItem.write(new File("C:\\" + fileItem.getName()));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
如图 源码引用的是javax
解决方案
目前想到的解决方案为降为老版本的tomcat服务器