JSP File Uploading
Introduction to JSP File Uploading
File upload करने का मतलब है की local system से किसी file को server पर store करना। उदाहरण के लिए आप Facebook पर photos share करने के लिए upload करते है। ये photos Facebook server पर stored होती है। अलग अलग scripting languages स्वयं की file upload करने की facility provide करती है। JSP के द्वारा भी आप किसी file को server पर upload कर सकते है। JSP के द्वारा text file से लेकर binary file और image files upload की जा सकती है।
JSP को यूज़ करते हुए file upload करने के लिए आप HTML form tag का इस्तेमाल करते है। इस tag के द्वारा आप file upload करने के लिए user interface provide करते है। File upload करने के लिए user इसी form से interact करता है।
Server से JSP file के माध्यम से interact किया जाता है। JSP file को end user द्वारा form submit किये जाने पर execute कराया जाता है।
Requirement For File Uploading Using JSP
JSP को यूज़ करते हुए file server पर upload करने के लिए आपको निचे दी गयी चार files की आवश्यकता होगी।
- Commons.io.jar File - ये एक Apache library होती है। इस library में आपके यूज़ के लिए utility classes, file filters, file comparators आदि classes available रहती है।
- Commons.fileupload.jar File - ये भी एक Apache library होती है। ये library web applications के लिए file uploading को बहुत ही आसान बना देती है।
- User Interface JSP File - ये वो JSP file होती है जिसमें आप file uploading के लिए HTML form design करते है। ये user interface होता है।
- Controller JSP File - ये वो JSP file होती है जो form के submit होने पर file handling को handle करती है।
Steps to Upload Files Using JSP
JSP के द्वारा file upload करने के 2 steps होते है।
- सबसे पहले HTML form tag के द्वारा user interface create किया जाता है।
- Form submit होने पर file को server पर upload करने के लिए controller JSP file execute करवाई जाती है। इन दोनों steps को निचे उदाहरण द्वारा detail से समझाया जा रहा है।
Creating User Interface (HTML form)
जैसा की मैने पहले बताया file upload करने के लिए user interface HTML form के द्वारा create किया जाएगा। Files को upload करने के लिए HTML forms में एक special file type का input element होता है। इस element को file uploading के लिए ही use किया जाता है। इसका general syntax निचे दिया जा रहा है।
<input type="file" name="name-of-file">
File uploading के लिए create किये गए form में आप अनिवार्य रूप से 3 attributes define करते है।
- action - इस attribute में आप उस JSP file का path देंगे जो form के submit होने पर execute होगी।
- method - Form का method POST ही होना चाहिए। यदि ये method GET होता है तो file uploading properly work नहीं करेगी।
- enctype - ये encode type attribute होता है। इसकी value हमेशा multipart/form-data देना ही अनिवार्य है।
File uploading के लिए user interface का उदाहरण निचे दिया जा रहा है।
<html>
<head>
<title>JSP File Upload Demo</title>
</head>
<body>
<h1>Select file to upload :</h1>
<form action="FileHandling.jsp" method="POST" enctype="multipart/form-data">
<input type="file" name="file1">
<input type="submit" value="Upload">
</form>
</body>
<html>
Create Controller JSP File
Controller JSP file में आप scriptlet tag के अंदर file को server पर upload करने के लिए java code लिखते है। इस java code के बारे में निचे detail से बताया जा रहा है।
- सबसे पहले आप निचे दिए गए packages को import करते है।
- java.io.*;
- java.util.*;
- javax.servlet.*;
- javax.servlet.http.*;
- org.apache.commons.fileupload.*;
- org.apache.commons.fileupload.disk.*;
- org.apcahe.commons.fileupload.servlet.*;
- org.apache.commons.io.output.*;
- Java code में सबसे पहले आप एक file type का object create करते है। ये object file को hold करने के लिए create किया जाता है।
- इसके बाद आप upload की जाने वाली file की disk size limit define करने के लिए एक variable create करते है और उसमे file की maximum size bytes के रूप में बताते है।
- इसके बाद आप upload की जाने वाली file की memory size define करने के लिए एक variable create करते है और उसमे file की maximum memory size bytes के रूप में define करते है।
- इसके बाद आप file को जँहा store करना चाहते है उस path को string variable करके define करते है।
- इसके बाद form के द्वारा submit की गयी file का content type check करते है। इसके लिए पहले तो आप request object पर getContentType method call करते है और उसे एक string variable में store करवाते है।
- इसके बाद आप if statement के द्वारा content type check करते है। यदि content type multipart/form-data है तो if statement block execute होगा।
- इसके बाद आप DiskFileItemFactory class का object create करते है और इस object पर आप setSizeThreshold method call करते है जिसमें की maximum memory limit variable pass किया जाता है ।
- इसके बाद आप इसी object पर setRepository method call करते है और उसमे जिस directory में आप file को temporarily upload करना चाहते है उसका path दिया जाता है।
- इसके बाद आप ServeltFileUpload class का variable create करते है और उसमे DiskFileItemFactory class का object pass करते है।
- इसके बाद आप ServletFileUpload class के object पर setSizeMax() method call करते है और उसमे maximum file size define करने के लिए पहले create किया गया variable pass करते है।
- इसके बाद आप try block start करते है और उसमें FileItem class का object create करते है।
- इसके बाद आप ServletFileUpload class के object पर parseRequest method call करते है। इस method में आप request object pass करते है। इसके बाद इसे FileItem class के object को assign कर दिया जाता है।
- इसके बाद आप FileItem class के object पर isFormField() method call करते है और check करते है की क्या ये request किसी form field से आयी है।
- इसके बाद आप FileItem class के object पर getFieldName() method call करते है और इसके result को एक string variable में store करते है।
- इसके बाद आप FileItem class के object पर getName() method call करते है और इसके result को भी एक string variable में store करवाते है।
- इसके बाद आप इसी objcet पर isInMemory() और getSize() methods call करते है और उनके result को respective variables में store करवाते है।
- इसके बाद आप file class का नया object create करते है और उसे file path का variable argument के रूप में pass करते है।
- इसके बाद आप FileItem class के object पर write() method call करते है और उसमे argument के रूप में file class का object pass करते है।
- इसके बाद आप out.println() method द्वारा एक message print करवाते है।
- इसके बाद आप catch block में exceptions को handle करते है।
- इसके बाद else part में appropriate message print करवाते है ।
<%
File file;
int maxFsize = 5000*1024; //Give maximum file size in bytes
int maxMsize = 5000*1024; //Give maximum memory size in bytes
String filePath = "c:/apache-tomcat/webapps/data/";
String contentTypeObj = request.getContentType();
if((contentTypeObj.indexOf("multipart/form-data") >= 0))
{
DiskFileItemFactory factoryObj = new DiskFileItemFactory();
factoryObj.setSizeThreshold(maxMsize);
factoryObj.setRepository(new File(c://temp));
servletFileUpload servletUploadObj = new ServletFileUpload(factoryObj);
servletUploadObj.setSizeMax(maxFsize);
try{
FileItem fiObj = upload.parseRequest(request);
if(!fiObj.isFormField())
{
String fieldName = fiObj.getFieldName();
String fileName = fiObj.getName();
boolean isInMemory = fiObj.isInMemory();
long sizeInBytes = fi.getSize();
file = new File(filePath + "File Name");
fiObj.write(file);
out.println("File was uploaded successfully!")
}
}
catch(Exception e)
{
system.out.println(e);
}
else{
out.println("File was not uploaded!")
}
}
%>