0

I have written a program in jsp to upload a file in a folder called images created inside webcontent, but my file is not getting uploaded. Please need some help.

<form action="upload_images_result.jsp" method="post">
    <div align="left">
        Select a file: <input type="file" name="file" size="50"
            enctype="multipart/form-data" placeholder="Upload Your Image" />
    </div>
    <br>
    <div>
        <input type="submit" value="Upload File" />
    </div>
</form>

upload_images_result.jsp

<%
File file;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
//ServletContext context = pageContext.getServletContext();
String filePath = "D:\\Students_Server\\WebContent\\Images";
// 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(               
    filePath "));
    // 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>");
}
%>

the output is getting printed as No File Uploaded

Thank you

2 Answers 2

1

When you make a POST request, you have to encode the data that forms the body of the request in some way.

HTML forms provide three methods of encoding.

  • application/x-www-form-urlencoded (the default)
  • multipart/form-data
  • text/plain

Use enctype=multipart/form-data when your form includes any <input type="file"> elements.

So Use

<form action="upload_images_result.jsp" method="post" enctype="multipart/form-data">
    <div align="left">
        Select a file: <input type="file" name="file" size="50"
            enctype="multipart/form-data" placeholder="Upload Your Image" />
    </div>
    <br>
    <div>
        <input type="submit" value="Upload File" />
    </div>
</form>
Sign up to request clarification or add additional context in comments.

Comments

1

You use wrong attribute in html. Attribute enctype="multipart/form-data" is only used in tag form as following.

<form action="upload_images_result.jsp"
      method="post" 
      enctype="multipart/form-data">
</form>

Alternative, you can use in tag input type="submit" as following.

<form action="upload_images_result.jsp" 
      method="post">
  <input type="submit" 
         formenctype="multipart/form-data" 
         value="Submit as Multipart/form-data"/>
</form>

1 Comment

thanx for replying sir , your first one is also correct

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.