Java apache commons fileupload example with servlet and jsp
Apache Commons FileUpload is a popular Java library for handling file uploads in web applications. In this example, we will show you how to use the library in a servlet-based web application that uses JSP for the presentation layer.
Assuming you have already set up a basic web application using Servlets and JSP, follow these steps to use Apache Commons FileUpload:
- Add the Apache Commons FileUpload dependency to your project. You can do this by adding the following dependency to your
pom.xml
file if you are using Maven:
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency>
- In your servlet, create a
ServletFileUpload
object to handle the file upload. This object will be used to parse the request and extract the uploaded file. Here is an example:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { // handle regular form fields } else { // handle file uploads } } }
In the above code, the
ServletFileUpload
object is used to obtain anFileItemIterator
from theHttpServletRequest
object. TheFileItemIterator
is used to iterate over all the items in the request, which may include both regular form fields and file uploads.For each item, we use the
FileItemStream
object to obtain the field name, input stream, and other properties of the item. If the item is a regular form field, we can handle it as needed. If the item is a file upload, we can save the uploaded file to disk or process it in some other way.To create a JSP page that includes a file upload form, you can use the following code:
<form action="UploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form>
In the JSP page, the
enctype
attribute of theform
element is set tomultipart/form-data
, which tells the browser to send the data as a multi-part form.When the user submits the form, the
UploadServlet
servlet will handle the file upload as described above.
Overall, Apache Commons FileUpload provides a simple and powerful way to handle file uploads in a servlet-based web application. With a few lines of code, you can easily handle file uploads and integrate them into your application.