ব্যবহারকারীদের সার্ভারে ফাইল আপলোড করার অনুমতি দেওয়ার জন্য একটি JSP একটি HTML ফর্ম ট্যাগের সাথে ব্যবহার করা যেতে পারে। একটি আপলোড করা ফাইল একটি টেক্সট ফাইল বা একটি বাইনারি বা একটি ইমেজ ফাইল বা কোনো ডকুমেন্ট হতে পারে।
একটি ফাইল আপলোড ফর্ম তৈরি করা
আসুন এখন বুঝি কিভাবে একটি ফাইল আপলোড ফর্ম তৈরি করতে হয়। নিম্নলিখিত HTML কোড একটি আপলোডার ফর্ম তৈরি করে। নিচে উল্লেখ করা গুরুত্বপূর্ণ বিষয়গুলো হল -
-
ফর্ম পদ্ধতি বৈশিষ্ট্য পোস্ট এ সেট করা উচিত পদ্ধতি এবং GET পদ্ধতি ব্যবহার করা যাবে না।
-
ফর্ম এনটাইপ বৈশিষ্ট্য মাল্টিপার্ট/ফর্ম-ডেটা সেট করা উচিত .
-
ফর্ম ক্রিয়া অ্যাট্রিবিউট একটি JSP ফাইলে সেট করা উচিত যা ব্যাকএন্ড সার্ভারে ফাইল আপলোডিং পরিচালনা করবে। নিম্নলিখিত উদাহরণ হল uploadFile.jsp ব্যবহার করা ফাইল আপলোড করার জন্য প্রোগ্রাম ফাইল।
-
একটি একক ফাইল আপলোড করতে আপনার একটি একক ব্যবহার করা উচিত৷ টাইপ ="ফাইল" বৈশিষ্ট্য সহ ট্যাগ . একাধিক ফাইল আপলোড করার অনুমতি দিতে, নামের বৈশিষ্ট্যের জন্য বিভিন্ন মান সহ একাধিক ইনপুট ট্যাগ অন্তর্ভুক্ত করুন। ব্রাউজার তাদের প্রত্যেকের সাথে একটি ব্রাউজ বোতাম যুক্ত করে।
উদাহরণ
<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>
এটি নিম্নলিখিত ফলাফল প্রদর্শন করবে। আপনি এখন স্থানীয় পিসি থেকে একটি ফাইল নির্বাচন করতে পারেন এবং যখন ব্যবহারকারী "ফাইল আপলোড" ক্লিক করেন, তখন নির্বাচিত ফাইলের সাথে ফর্মটি জমা দেওয়া হয় -
আউটপুট
File Upload Select a file to upload
দ্রষ্টব্য − উপরের ফর্মটি শুধুমাত্র ডামি ফর্ম এবং কাজ করবে না, এটি কাজ করার জন্য আপনার মেশিনে উপরের কোডটি চেষ্টা করা উচিত।
ব্যাকএন্ড JSP স্ক্রিপ্ট লেখা
আসুন এখন একটি অবস্থান নির্ধারণ করি যেখানে আপলোড করা ফাইলগুলি সংরক্ষণ করা হবে। আপনি আপনার প্রোগ্রামে এটিকে হার্ড কোড করতে পারেন বা এই ডিরেক্টরির নামটি একটি বাহ্যিক কনফিগারেশন যেমন প্রসঙ্গ-পরম ব্যবহার করে যোগ করা যেতে পারে web.xml-এ এলিমেন্ট নিম্নরূপ −
<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-এর সোর্স কোড নিচে দেওয়া হল . এটি একবারে একাধিক ফাইল আপলোড করা পরিচালনা করতে পারে। ফাইল আপলোড করার আগে আমাদের এখন নিচের বিষয়গুলো বিবেচনা করা যাক।
-
নিচের উদাহরণটি নির্ভর করে FileUpload এর উপর; নিশ্চিত করুন যে আপনার কাছে the commons-fileupload.x.x.jar এর সর্বশেষ সংস্করণ আছে আপনার ক্লাসপথে ফাইল করুন। আপনি এটি https://commons.apache.org/fileupload/ থেকে ডাউনলোড করতে পারেন।
-
ফাইল আপলোড কমন্স IO এর উপর নির্ভর করে; নিশ্চিত করুন যে আপনার কাছে commons-io-x.x.jar এর সর্বশেষ সংস্করণ আছে আপনার ক্লাসপথে ফাইল করুন। আপনি এটি https://commons.apache.org/io/ থেকে ডাউনলোড করতে পারেন।
-
নিম্নলিখিত উদাহরণটি পরীক্ষা করার সময়, আপনার একটি ফাইল আপলোড করা উচিত যা maxFileSize থেকে কম আকারের অন্যথায় ফাইলটি আপলোড করা হবে না।
-
আপনি c:\temp ডিরেক্টরি তৈরি করেছেন তা নিশ্চিত করুন এবং c:\apache-tomcat5.5.29\webapps\data ভাল আগাম।
<%@ 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>"); } %>
এখন আপনি উপরে তৈরি করা HTML ফর্ম ব্যবহার করে ফাইল আপলোড করার চেষ্টা করুন। আপনি যখন চেষ্টা করেন https://localhost:8080/UploadFile.htm , এটি নিম্নলিখিত ফলাফল প্রদর্শন করবে। এটি আপনাকে আপনার স্থানীয় মেশিন থেকে যেকোনো ফাইল আপলোড করতে সাহায্য করবে।
File Upload Select a file to upload
আপনার JSP স্ক্রিপ্ট ঠিকঠাক কাজ করলে, আপনার ফাইল c:\apache-tomcat5.5.29\webapps\data\-এ আপলোড করা উচিত ডিরেক্টরি।