يمكن لـ JSP تحميل الملفات إلى الخادم من خلال نماذج HTML. يمكن أن يكون نوع الملف ملفًا نصيًا أو ملفًا ثنائيًا أو ملف صورة أو أي مستند آخر.
بعد ذلك نستخدم علامات HTML لإنشاء نموذج تحميل الملف، ويجب ملاحظة النقاط التالية:
يجب تعيين سمة أسلوب النموذج على أسلوب POST، ولا يمكن استخدام أسلوب GET.
يجب تعيين سمة enctype للنموذج على بيانات متعددة الأجزاء/النموذج.
يجب تعيين سمة إجراء النموذج على عنوان ملف jsp الذي تم إرساله إلى الخلفية لتحميل الملف. على سبيل المثال، يتم استخدام ملف البرنامج uploadFile.jsp لمعالجة الملفات التي تم تحميلها.
لتحميل عنصر ملف، تحتاج إلى استخدام العلامة <input .../> وتعيين السمة على type = "file". إذا كنت بحاجة إلى تحميل ملفات متعددة، فيمكنك تعيين أسماء مختلفة في العلامة <input .../>.
فيما يلي نموذج لتحميل الملفات، والمثال على ذلك هو كما يلي:
<html><head><title>نموذج تحميل الملف</title></head><body><h3>تحميل الملف:</h3>حدد ملفًا لتحميله: <br /><form action="UploadServlet" طريقة = "post" enctype = "multipart/form-data"> <input type = "file" name = "file" size = "50" /><br /><input type = "submit" value = "تحميل الملف" " /></النموذج></body></html>قم بالوصول إلى الملف في متصفحك المحلي، وتكون واجهة العرض كما يلي. عند النقر فوق "تحميل ملف"، ستظهر نافذة تتيح لك تحديد الملف المراد تحميله:
أولاً، نقوم أولاً بتحديد الموقع الذي تم تخزين الملف فيه على الخدمة بعد التحميل، يمكنك كتابة المسار في برنامجك، أو يمكننا تعيين الدليل حيث يتم تخزين الملف عن طريق تعيين عنصر معلمة السياق في web.xml. ملف التكوين كما يلي عرض:
<web-app>....<context-param> <description>عنوان تحميل الملف</description> <param-name>تحميل الملف</param-name> <param-value> c:Apache-tomcat- 5.5.29webappsdata </param-value> </context-param>....</web-app>
يمكن لملف البرنامج النصي التالي UploadFile.jsp التعامل مع عدة ملفات تم تحميلها قبل استخدام هذا البرنامج النصي، نحتاج إلى الانتباه إلى النقاط التالية:
يعتمد المثال التالي على FileUpload، لذلك تحتاج إلى تقديم أحدث ملف حزمة commons-fileupload.xxjar في مسار الفصل الدراسي الخاص بك. عنوان التنزيل هو: http://commons.Apache.org/fileupload/.
يعتمد FileUpload على Commons IO، لذلك تحتاج إلى تقديم أحدث إصدار من commons-io-xxjar في مسار الفصل الدراسي الخاص بك. عنوان التنزيل هو: http://commons.Apache.org/io/.
عند اختبار المثال التالي، يجب عليك التحميل والتأكد من أن حجم الملف الذي تم تحميله أصغر من الحجم الذي حدده المتغير maxFileSize ، وإلا فلن يمكن تحميل الملف بنجاح.
تأكد من إنشاء المجلدين c:temp وc:Apache-tomcat-5.5.29webappsdata.
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %><%@ page import="javax.servlet.http.*" %><%@ page import= "org.apache.commons.fileupload.*" %><%@ الصفحة import="org.apache.commons.fileupload.disk.*" %><%@ الصفحة import="org.apache.commons.fileupload.servlet.*" %><%@ page import="org.apache.commons.io.output.*" %><% ملف الملف; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024; ServletContext context = pageContext.getServletContext(); context.getInitParameter("file-upload"); // التحقق من نوع المحتوى الذي تم تحميله String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory Factory = new DiskFileItemFactory(); // تعيين الحد الأقصى لحجم الملفات المخزنة في الذاكرة Factory.setSizeThreshold(maxMemSize); البيانات المخزنة محليًا أكبر من maxMemSizefactory.setRepository(new File("c:\temp")); // إنشاء معالج تحميل ملف جديد ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax( maxFileSize ); حاول { // تحليل الملف الذي تم الحصول عليه List fileItems = upload.parseRequest(request); معالجة الملفات المرفوعة Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); ); out.println("</head>"); out.println("<body>"); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // احصل على معلمات الملف الذي تم تحميله String fieldName = fi.getFieldName(); String fileName = fi.getName(); .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("اسم الملف الذي تم تحميله: " + 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</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>لم يتم تحميل أي ملف</p>"); out.println("</body>"); out.println("</html> "); }%>
بعد ذلك، دعونا ندخل إلى http://localhost:8080/UploadFile.htm من خلال المتصفح، كما هو موضح أدناه، ونقوم بتحميل الملف:
إذا كان برنامج JSP النصي يعمل بشكل طبيعي، فسيتم تحميل الملف إلى c:Apache-tomcat-5.5.29webappsdata.