1. أفكار لتحميل ملفات الدعامات
لقد تحدثت أيضًا عن مكون fileUpload من قبل. لديها وظائف قوية ، ولكن العملية معقدة ومعقدة. هذه المرة ، يتم دعم تحميل الملفات أيضًا في Strust و FileUpload يتم تعبئتها ، وهو أكثر ملاءمة للاستخدام.
هنا تأتي علامة وفصل:
<html: file property = "المقابلة لاسم الخاصية في ActionForm">
استخدم هذه العلامة لتحميل الملفات ، ولكن لتلقي المحتويات ، يجب أن تعتمد على org.apache.struts.upload.formfile
تم الانتهاء من الواجهة.
2. الإدراك
sh.jsp:
<٪@ page language = "java" import = "java.util.* uri = "http://jakarta.apache.org/struts/tags-html" prefix = "html" ٪> <٪@ taglib uri = "http://jakarta.apache.org/struts/tags-logic html 4.01 Transitional // en "> <html> <head> <title> sh.jsp </title> <meta http-equiv =" content-type "content =" text/html <html: file property = "photo"> </html: file> <html: إرسال value = "expload"> </html: إرسال> </html: form> </body> </tml>
exploadform.java:
package com.zyy.struts.form ؛ import org.apache.struts.action.Actionform ؛ import org.apache.struts.upload.formfile ؛ expload floodform يمتد Actionform {private formfile photo ؛ publicfile getPhoto () {return photo ؛ } public void setphoto (formfile photo) {this.photo = photo ؛ }} iptimestamp.java:
package com.zyy.util ؛ import java.text.simpledateformat ؛ import java.util.date ؛ import java.util.random ؛ public class iptimestamp {private spositformat sdf = null ؛ سلسلة خاصة IP = NULL ؛ public iptimestamp () {} public iptimestamp (string ip) {this.ip = ip ؛ } السلسلة العامة getIpTimerand () {StringBuffer buf = new StringBuffer () ؛ if (this.ip! = null) {string s [] = this.ip.split ("//.") ؛ لـ (int i = 0 ؛ i <s.length ؛ i ++) {buf.append (this.addzero (s [i] ، 3)) ؛ }} buf.append (this.getTimestamp ()) ؛ عشوائي R = جديد عشوائي () ؛ لـ (int i = 0 ؛ i <3 ؛ i ++) {buf.append (r.nextint (10)) ؛ } return buf.toString () ؛ } السلسلة العامة getDate () {this.sdf = new SimplEdateFormat ("Yyyy-MM-DD HH: MM: SS.SSS") ؛ إرجاع this.sdf.format (تاريخ جديد ()) ؛ } السلسلة العامة getTimEstamp () {this.sdf = new SimplEdateFormat ("YyyyMMDDHHMMSSSSSs") ؛ إرجاع this.sdf.format (تاريخ جديد ()) ؛ } سلسلة خاصة addzero (String str ، int len) {StringBuffer s = new StringBuffer () ؛ S.Append (Str) ؛ بينما (s.length () <len) {s.insert (0 ، "0") ؛ } return S.ToString () ؛ } public static void main (String args []) {system.out.println (new iptimestamp ("192.168.1.1"). getiptimerand ()) ؛ }}uploadAction.java:
package com.zyy.struts.action ؛ import java.io.file ؛ import java.io.fileOutputStream ؛ import java.io.inputStream ؛ import java.io.outputstream ؛ import javax.servlet.http.httpservled ؛ org.apache.struts.action.action ؛ import org.apache.struts.action.action.Action ؛ import org.apache.structs.action.actionforward ؛ import org.apache.structs.action.actionmapp طلب httpservletrequest ، استجابة httpservletresponse) يلقي استثناء {eploadform eploadform = (eploadform) ؛ iptimestamp ips = new iptimestamp (request.getRemoteadDr ()) ؛ // اسم الملف اسم filename = ips.getiptimerand () + ".". + UploadForm.getPhoto (). getFilename (). split ("//.") [UploadForm.getPhoto (). getFilename (). split ("//."). الطول - 1] ؛ // إخراج ملف ملف outfile = ملف جديد (super.getServlet (). getServletContext () .getRealPath ("/") + "تحميل" + file.separator + filename) ؛ . if (! file.exists ()) {file.mkdir () ؛ } inputStream input = UploadForm.getPhoto (). getInputStream () ؛ OutputStream Output = fileOutputStream جديد (Outfile) ؛ بيانات البايت [] = بايت جديد [1024] ؛ int temp = 0 ؛ بينما ((temp = input.Read (البيانات ، 0 ، 1024))! = -1) {output.write (data) ؛ } output.close () ؛ input.close () ؛ العودة لاغية. }}Struts-config.xml:
<؟ <Porm-beans> <form-bean name = "uploadform" type = "com.zyy.struts.form.uploadform"> </form-bean> </form-beans> <global-expections> </global-exceptions> <blobal-forwards> </lobly-forwards> <action-mappings> name = "uploadform" scope = "request" type = "com.zyy.struts.action.uploadaction"> </usice> </sove-mappings> <message-resources parameter = "resource.messageresources"/> </struts-config>
نظرًا لأن ما أقوم به هو Super.getServlet (). getServletContext ().
هذا هو المسار الحقيقي للدليل الافتراضي ضمن مجلد التحميل.
يمكن ملاحظة أن مبدأ تحميل الملفات في الدعامات هو نفسه FileUpload ، ولكن يتم تعبئة الدعامات ، لذلك من الواضح أنه أكثر ملاءمة للاستخدام من استخدام مكون fileUpload وحده.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.