Java 无法将JSP-DiskFileItemFactory解析为类型

Java 无法将JSP-DiskFileItemFactory解析为类型,java,jsp,Java,Jsp,大家早上好 我目前正尝试使用以下示例在JSP中实现文件上载: 当我在没有修改的情况下运行示例时,我收到: 无法将DiskFileItemFactory解析为类型 我也遇到了org.apache.commons导入不正确的问题。这可能有关联吗 我正在运行的tomcat版本是apache-tomcat-8.5.47,服务器代码附在下面: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEn

大家早上好

我目前正尝试使用以下示例在JSP中实现文件上载:

当我在没有修改的情况下运行示例时,我收到:

无法将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>




古鲁文件上传
= 0)) {
DiskFileItemFactory=新的DiskFileItemFactory();
factory.setSizeThreshold(maxMemSize);
setRepository(新文件(“c:\\temp”);
ServletFileUpload upload=新的ServletFileUpload(工厂);
upload.setSizeMax(maxFileSize);
试试{
List fileItems=upload.parseRequest(请求);
迭代器i=fileItems.Iterator();
out.println(“”);
out.println(“”);
而(i.hasNext())
{
FileItem fi=(FileItem)i.next();
如果(!fi.isFormField()){
字符串fieldName=fi.getFieldName();
字符串文件名=fi.getName();
布尔值isInMemory=fi.isInMemory();
long-sizeInBytes=fi.getSize();
文件=新文件(文件路径+“yourFileName”);
fi.写入(文件);
out.println(“上传的文件名:“+filePath+Filename+”
”; } } out.println(“”); out.println(“”); }捕获(例外情况除外){ 系统输出打印项次(ex); } }否则{ out.println(“”); out.println(“”); out.println(“没有上传文件”

”; out.println(“”); out.println(“”); } %>
我不反对关于如何使用JSP通过POST请求上传文件的任何其他建议。我只是不能利用任何非本机的库


再次感谢。

我建议您避免在JSP中使用Scriptlet,并在servlet中移动上载代码。谢谢。我目前知道不在JSP中包含任何IO代码的建议。但这种情况有点独特,因为所有代码都必须包含在一个.jsp文件中。