قدمت مواصفات Servlet 3.0 httpservletrequest طريقة للتعامل مع تحميلات الملفات ، ولكن يجب إجراء مثل هذه التحميلات في Servlet. يوفر Struts2 حزمة أبسط.
يستخدم Struts2 إطار تحميل ملف Jakarta المشترك للملف بشكل افتراضي. لذلك ، باستخدام وظيفة تحميل ملف Struts2 ، تحتاج إلى إضافة حزمتين جرة ، وهما Commons-IO-2.2.jar و commons-filepload-1.3.1.jar.
مثال على تحميل الملفات البسيطة: مثال:
1. صفحة تحميل الملف
من أجل تحميل الملفات ، يجب تعيين طريقة النموذج على النشر ويتم تعيين enctype على multipart/form-data. بمجرد ضبط enctype على multipart/form-data ، سيستخدم المتصفح تدفقات ثنائية لمعالجة بيانات النماذج.
<٪@ taglib prefix = "s" uri = "/struts-tags" ٪> <٪-تم إنشاؤه بواسطة intellij Idea. المستخدم: تاريخ المسؤول: 2018/1/16 الوقت: 14:06 لتغيير ملف استخدام هذا القالب | الإعدادات | قوالب الملفات.-٪> <٪@ page contentType = "text/html ؛ charset = utf-8" language = "java" ٪> <html> <head> <title> struts2 simple file تحميل </title> </head> <body> <s: form action = "file_upload" method = "post" envart/fill "<spile> <s exta label = "SELECT FILE"/> <s: إرسال value = "upload"/> </s: form> </body> </html>
2. معالجة إجراء طلب التحميل
/** * الوصف: struts2 تحميل الملف البسيط * المؤلف: Eleven * التاريخ: 2018/1/24 10:39 */فئة Public Class يمتد Actionupport {// تحميل ملف الملف الخاص ؛ // قم بتحميل نوع الملف الخاص بالسلسلة الخاصة. // تحميل اسم الملف الخاص بالسلسلة الخاصة. // تحميل ملفات تحميل ملفات ؛ يتم تعيين أنواع السلسلة الخاصة ديناميكيًا في Struts.xml باستخدام علامة param في Struts.xml ؛ صفحة السلسلة العامة () {إرجاع "صفحة" ؛ } public void upload () {// upload: // 1. اقرأ محتوى الملف // 2. اكتب محتوى الملف إلى الملف المحدد ، TRAWER {system.out.println ("تحميل الملف المسموح به type ="+allowtypes) ؛ String RealPath = servleTActionContext.getServletContext (). getRealPath ("/expload") ؛ System.out.println ("المسار المطلق للمشروع ="+RealPath) ؛ // إنشاء ملف حفظ الملف الجديد (RealPath) .mkdir () ؛ ملف ملف = ملف جديد (RealPath+"/"+UploadFilename) ؛ // إنشاء if (! file.exists ()) {file.createNewFile () ؛ } fileOutputStream Out = fileOutputStream (ملف جديد) ؛ FileInputStream في = جديد fileInputStream (تحميل) ؛ Byte [] Buffer = New Byte [1024] ؛ int len = 0 ؛ // اكتب أثناء القراءة والكتابة 1 كيلو بايت في كل مرة اكتب 1 كيلو بايت بينما ((len = in.read (buffer))> 0) {out.write (buffer ، 0 ، len) ؛ } system.out.println ("تحميل الملف بنجاح ...") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} الملف العام getUpload () {return upload ؛ } public void setupload (تحميل الملف) {this.upload = upload ؛ } السلسلة العامة getUploAdContentType () {return UploadContentType ؛ } public void setuploadContentType (سلسلة uploadContentType) {this.uploadContentType = UploadContentType ؛ } السلسلة العامة getUploAdfilename () {return UploadFilename ؛ } public void setuploadfilename (سلسلة exploadFiLename) {this.uploadfilename = UploadFilename ؛ } السلسلة العامة getLowTypes () {return lemttytyty ؛ } public void setallytypes (string lemttypes) {this.allowtypes = lemettypes ؛ }}إذا كان النموذج يحتوي على حقل ملف مع سمة الاسم xxx ، فيجب أن يستخدم الإجراء المقابل ثلاثة متغيرات أعضاء لتغليف معلومات حقل الملف.
يقوم متغير عضو XXX بملف النوع بتغليف محتوى الملف المقابل لحقل الملف.
يتغلف متغير عضو XXXFiLENAME من سلسلة النوع اسم الملف للملف المقابل لحقل الملف.
يتضمن متغير عضو XXXContentType من سلسلة النوع نوع الملف للملف المقابل لحقل الملف.
3. تكوين Struts.xml
<؟ value = "false"/> <name name = "struts.devmode" value = "true"/> <package name = "default" namespace = "/" extendes = "struts-default"> <!-file upload-> <action name = "file_*" method = "{1}" ملكيات. فيما يلي مثال لتعيين النوع الذي يسمح بتحميلات الملفات ، لكن برنامج الإجراء لا يقوم بالكثير من المعالجة -> <param name = "allowtypes"يعرض التقاطع تصفية الملفات
يوفر Struts2 اعتراضًا لتحميل الملف ، FileUpload. لكي يعمل هذا الاعتراض ، يجب تكوين مرجع التقاطع في الإجراء.
عند تكوين اعتراض fileUpload ، يمكنك تحديد معلمتين لذلك:
ALTERTYPES: نوع الملف المسموح به لتحميله ، مفصولة بأنواع ملفات متعددة مع فواصل باللغة الإنجليزية
MaximumSize: حجم الملف المسموح به لتحميله ، بالبايت.
عند فشل تصفية الملفات ، ينقل النظام تلقائيًا إلى العرض المنطقي للإدخال ، لذلك يجب تكوين العرض المنطقي المسمى الإدخال لهذا الإجراء. بالإضافة إلى ذلك ، يجب تكوين مرجع التقاطع لـ DefaultStack لهذا الإجراء كما هو معروض.
ملف تكوين struts.xml كما يلي:
<؟ value = "false" /> <name name = "struts.devmode" value = "true" /> <package name = "default" namespace = " /" extendes = "struts-default"> <! name = "fileupload"> <!-نوع الملف المسموح به-> <param name = "promplypes"> image/png ، image/gif ، image/jpeg </param> <!-حجم الملف المسموح به-> <param name = "maximtize"> 2000 </param> </interceptor-ref> <! صفحة عرض الإدخال-> <result name = "input">/web-inf/jsp/input.jsp </redress> <result name = "page">/web-inf/jsp/fileupload.jsp </redress> </socation> </packt> </struts>
يتطلب اعتراض تحميل الملف الذي تم تكوينه أعلاه أن يكون نوع تحميل الملف فقط ملف صورة ، ولا يمكن أن يكون حجم الملف أكبر من 2000 بايت. إذا كان الملف الذي تم تحميله كبيرًا جدًا أو لا يتطابق النوع ، فسيقفز إلى العرض المنطقي للإدخال.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.