Dekblom
Dekblom

Reputation: 11

DiskFileItemFactory cannot be resolved to a type

I have tried to copy the tutorial from here JSP File Uploading. I am using Eclipse and Tomcat, but when I run it on the server I get the error:

 An error occurred at line: 24 in the jsp file: /index.jsp
DiskFileItemFactory cannot be resolved to a type
21:    String contentType = request.getContentType();
22:    if ((contentType.indexOf("multipart/form-data") >= 0)) {
23: 
24:       DiskFileItemFactory factory = new DiskFileItemFactory();
25:       // maximum size that will be stored in memory
26:       factory.setSizeThreshold(maxMemSize);
27:       // Location to save data that is larger than maxMemSize.

I have downloaded the commons fileupload and io packages and added the jars as external in the build path. The code is a direct copy from the tutorial with imports and everythingh, here is the full code from the link:

<%@ 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.*" %>

<%
   File file ;
   int maxFileSize = 5000 * 1024;
   int maxMemSize = 5000 * 1024;
   ServletContext context = pageContext.getServletContext();
   String filePath = context.getInitParameter("file-upload");

   // Verify the content type
   String contentType = request.getContentType();
   if ((contentType.indexOf("multipart/form-data") >= 0)) {

      DiskFileItemFactory factory = new DiskFileItemFactory();
      // maximum size that will be stored in memory
      factory.setSizeThreshold(maxMemSize);
      // Location to save data that is larger than maxMemSize.
      factory.setRepository(new File("c:\\temp"));

      // Create a new file upload handler
      ServletFileUpload upload = new ServletFileUpload(factory);
      // maximum file size to be uploaded.
      upload.setSizeMax( maxFileSize );
      try{ 
         // Parse the request to get file items.
         List fileItems = upload.parseRequest(request);

         // Process the uploaded file items
         Iterator i = fileItems.iterator();

         out.println("<html>");
         out.println("<head>");
         out.println("<title>JSP File upload</title>");  
         out.println("</head>");
         out.println("<body>");
         while ( i.hasNext () ) 
         {
            FileItem fi = (FileItem)i.next();
            if ( !fi.isFormField () )   
            {
            // Get the uploaded file parameters
            String fieldName = fi.getFieldName();
            String fileName = fi.getName();
            boolean isInMemory = fi.isInMemory();
            long sizeInBytes = fi.getSize();
            // Write the file
            if( fileName.lastIndexOf("\\") >= 0 ){
            file = new File( filePath + 
            fileName.substring( fileName.lastIndexOf("\\"))) ;
            }else{
            file = new File( filePath + 
            fileName.substring(fileName.lastIndexOf("\\")+1)) ;
            }
            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("<head>");
      out.println("<title>Servlet upload</title>");  
      out.println("</head>");
      out.println("<body>");
      out.println("<p>No file uploaded</p>"); 
      out.println("</body>");
      out.println("</html>");
   }
%>

Upvotes: 1

Views: 8654

Answers (1)

Roman C
Roman C

Reputation: 1

You should copy jars to WEB-INF/lib. This is the only way to guarantee that the libraries will be on classpath when you run deployed web application.

Don't write this fileupload business logic in JSP file. Instead of use a servlet for file uploading. Example of such servlet you can find here.

Eclipse project structure:

Upvotes: 1

Related Questions