JSP HTML ফর্ম ট্যাগের সাথে ব্যবহার করা যেতে পারে যাতে ব্যবহারকারীরা সার্ভারে ফাইল আপলোড করতে পারে। একটি আপলোডেড ফাইল হতে পারে টেক্সট ফাইল, বাইনারি, ইমেজ ফাইল বা যেকোনো ডকুমেন্ট।
ফাইল আপলোড ফর্ম তৈরি করা
নিচের HTML কোডটি একটি আপলোডার ফর্ম তৈরি করে। গুরুত্বপূর্ণ পয়েন্টগুলো:
- ফর্ম method অ্যাট্রিবিউট POST হতে হবে, GET ব্যবহার করা যাবে না
- ফর্ম enctype অ্যাট্রিবিউট multipart/form-data হতে হবে
- ফর্ম action অ্যাট্রিবিউট/backend JSP ফাইলকে পয়েন্ট করবে (উদাহরণ: uploadFile.jsp)
- একক ফাইলের জন্য একটু
<input type="file">ট্যাগ, একাধিক ফাইলের জন্য একাধিক ইনপুট ট্যাগ ভিন্ন name দিয়ে
উদাহরণ: UploadFile.htm
<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action = "UploadServlet" method = "post" enctype = "multipart/form-data">
<input type = "file" name = "file" size = "50" />
<br />
<input type = "submit" value = "Upload File" />
</form>
</body>
</html>
ব্যাকএন্ড JSP স্ক্রিপ্ট: UploadFile.jsp
আপলোডেড ফাইলগুলো কোথায় স্টোর হবে তা ডিফাইন করুন। এটি হার্ডকোড করা যায় বা web.xml-এ context-param দিয়ে কনফিগার করা যায়:
<web-app>
....
<context-param>
<description>Location to store uploaded file</description>
<param-name>file-upload</param-name>
<param-value>c:\apache-tomcat-5.5.29\webapps\data\</param-value>
</context-param>
....
</web-app>
আপলোড হ্যান্ডলিং কোড (UploadFile.jsp)
<%@ 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();
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><head><title>JSP File upload</title></head><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();
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></html>");
} catch(Exception ex) {
System.out.println(ex);
}
} else {
out.println("<html><head><title>Servlet upload</title></head><body>");
out.println("<p>No file uploaded</p></body></html>");
}
%>
প্রয়োজনীয় লাইব্রেরি
- commons-fileupload-x.x.jar — https://commons.apache.org/fileupload/
- commons-io-x.x.jar — https://commons.apache.org/io/
ডিরেক্টরি তৈরি করুন
- c:\temp
- c:\apache-tomcat-5.5.29\webapps\data
সফল হলে ফাইলটি c:\apache-tomcat-5.5.29\webapps\data\ ডিরেক্টরিতে আপলোড হবে।