تحميل الملف
multipart/form-data<input type=“file”> .<s: form action = "testUpload" enviled = "multipart/form-data"> <s: textfield name = "username [0]" label = "user-1"> </s: textfield> <s: file name = "photo" label = "photos> label = "photos"> </s: file> <s: textfield name = "username [2]" label = "user-3"> </s: textfield> <s: file name = "photo" label = "photo"> </s: file> <s: إرسال value = "submit"> </s: form>
يمتد عملية تحميل الفئة العامة ActionSupport { @setter @getter قائمة private <file> صور ؛ @setter@getter قائمة خاصة <string> photoscontentType ؛ @setter@getter قائمة خاصة <string> photosfilename ؛ @setter@getter قائمة خاصة <string> اسم المستخدم ؛ السلسلة العامة testupload () يلقي ioException {system.out.println ("اسم المستخدم:"+اسم المستخدم) ؛ System.out.println ("الصور:"+صور) ؛ System.out.println ("Photosfilename:"+photosfilename) ؛ system.out.println ("photoscontenttype:"+photoscontenttype) ؛ // تمرير الملف إلى ملف التحميل في دليل جذر الخادم // الحصول على servletContext servletContext servletContext = servletactionContext.getServletContext () ؛ // احصل على سلسلة المسار الحقيقية realPath = servletContext.getRealPath ("/expload") ؛ System.out.println (RealPath) ؛ ملف uploadFile = ملف جديد (RealPath) ؛ // ادعى ما إذا كان المسار موجودًا إذا (! UploadFile.exists ()) {// إنشاء eploadfile.mkdir () ؛ } لـ (int i = 0 ؛ i <photos.size () ؛ i ++) {uuid uuid = uuid.randomuuid () ؛ fileutils.copyfile (photos.get (i) ، ملف جديد (RealPath + "/" + uuid + photosfilename.get (i))) ؛ } نجاح العودة ؛ }}1. كم عدد المشكلات الصغيرة التي يجب التعامل معها؟
1. اسم الملف له اسم مكرر. بشكل عام ، يمكن إنشاء UUID قبل اسم الملف كبادئة.
2. الحد من حجم ملف واحد
3. تقييد أنواع الملفات
4. الحد من حجم الملف الكلي
2. يتم توفير اعتراض FileUpload في Struts2 لتعيين قيم السمات هذه.
يحتوي Interceptor FileUpload على 3 خصائص يمكن تعيينها.
ملاحظة: هناك حد على الحجم الكلي للملفات التي تم تحميلها في default.properties تحت org.apache.struts2. يمكنك استخدام الثوابت لتعديل هذا الحد الأقصى. multipart.maxSize = 2097152
<name constant = "struts.devmode" value = "true"/> <!-تغيير حجم الملف الكلي هنا-> <name constant name = "defaultStack"> <!-تغيير حجم ملف واحد ، يقبل مكون commons fileUpload الملفات التي تم تحميلها بشكل افتراضي 2m-> <param name = "fileupload.maximums"> 57،408 </param> <! <!-امتدادات لتحميل ملفات-> <param name = "fileupload.allowedextensions"> jpg ، gif </param> </interceptor-ref> </interceptor-stack> </enterceptors> <method = "testuproive-inter-ref name =" myInterceptor "</ name = "success">/web-inf/views
1. رسائل الخطأ المتعلقة بتحميل الملفات؟
1. رسائل الخطأ المتعلقة بتحميل الملف محدد مسبقًا في ملف struts-messages.properties.
2. يمكنك تحميل ملف المورد المقابل للإجراء في الملف أو إعادة تعريف رسالة الخطأ في ملف المورد الدولي I18N_ZH_CN.Properties
struts.messages.error.file.too.large = الملف الذي تمرره هو struts.messages.error.content.type.not.allyded = نوع الملف struts.messages.error.file.extense.not.wallyd = extension struts.messages.ror.eror.sizelimite.
تنزيل الملف
في بعض التطبيقات ، قد يكون من الضروري إرسال ملف إلى متصفح المستخدم ديناميكيًا ، ولا يمكن التنبؤ بالاسم وموقع التخزين للملف عند البرمجة
نموذج الرمز
<a href = "testDownload"> تنزيل </a>
يمتد تحميل الفئة العامة ActionSupport {// عادةً ما يتم توفير المعلمات التالية في Action @setter @getter private string contentType ؛ @setter@getter private long contentLength ؛ @setter@getter private string contentDisposition ؛ @setter@getter private inputStream inputStream ؛ السلسلة العامة testDownload () يلقي FileNotfoundException ، UnsupportedEncodingException {// Get ServletContext ServletContext servletcontext = servletactionContext.getServletContext () ؛ // احصل على مسار سلسلة الملف realPath = servletContext.getRealPath ("/web-inf/file/على الأقل you.mp3") ؛ // احصل على دفق الملف inputStream = جديد fileInputStream (RealPath) ؛ // قم بتعيين نوع الملف contentType = servletContext.getMimetype (RealPath) ؛ // احصل على طول الملف contentLength = new file (RealPath) .Length () ؛ // قم بتعيين اسم ملف اسم الملف = "على الأقل you.mp3" ؛ filename = سلسلة جديدة (filename.getBytes ("GBK") ، "ISO8859-1") ؛ contentDisposition = "المرفق ؛ اسم الملف ="+اسم الملف ؛ العودة النجاح }}<!-تنزيل الملف-> <Action name = "testDownload" method = "testDownload"> <result type = "dream"> <!-حجم المخزن المؤقت للملف-> <param name = "bufferSize"> 2048 </param> </sult> </action>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.