java - JSP - DiskFileItemFactory 无法解析为类型
问题描述
大家早上好,
我目前正在尝试使用此处包含的以下示例在 JSP 中实现文件上传:https ://www.guru99.com/jsp-file-upload-download.html
当我运行没有修改的示例时,我收到:
DiskFileItemFactory 无法解析为类型
我也遇到了 org.apache.commons 无法正确导入的问题。这可能是相关的?
我运行的tomcat版本是apache-tomcat-8.5.47,服务器代码附在下面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru File Upload</title>
</head>
<body>
<%
File file ;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
String filePath = "E:/guru99/data";
String contentType = request.getContentType();
if ((contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(maxMemSize);
factory.setRepository(new File("c:\\temp"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax( maxFileSize );
try{
List fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
out.println("<html>");
out.println("<body>");
while ( i.hasNext () )
{
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () ) {
String fieldName = fi.getFieldName();
String fileName = fi.getName();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
file = new File( filePath + "yourFileName") ;
fi.write( file ) ;
out.println("Uploaded Filename: " + filePath + fileName + "<br>");
}
}
out.println("</body>");
out.println("</html>");
}catch(Exception ex) {
System.out.println(ex);
}
}else{
out.println("<html>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
}
%>
</body>
</html>
我不反对任何其他关于如何使用 JSP 通过 POST 请求上传文件的建议。我只是不能使用任何非本地库。
再次感谢。
解决方案
推荐阅读
- c++ - 如何从 C++ 中 O(n) 中的关联 NxN 矩阵中删除行和列?
- swift - 在垂直堆栈视图中水平添加按钮
- python - 如何在 Python 设置脚本中要求 importlib.resources
- python - 如何使用外键和内联创建表单
- python - Pandas DateOffset 复制其他列
- javascript - 使用 JavaScript 在页面加载时打开特定选项卡以“单击”带有 2 个选项卡式菜单
- java - java中If语句不断出错
- sql - Redshift 查询计划器和视图
- swift - 返回 FCM 令牌以存储在变量中(带有 Firebase 的 Swift 5)
- java - 以前的日期和现在的日期