تحميل الملف والتنزيل
مكتب الاستقبال:
1. طريقة التقديم: بعد
2. هناك عناصر نموذج تم تحميل ملف في النموذج: <إدخال type = "file" />
3. حدد نوع النموذج:
النوع الافتراضي: enctype = "application/x-www-form-urlencoded"
نوع تحميل الملف: multipart/form-data
fileUpload
يتم استخدامه بشكل شائع في تطوير وظيفة تحميل الملف ، كما يوفر Apache مكونات تحميل الملف!
مكون FileUpload:
1. قم بتنزيل رمز المصدر
2. تقديم ملفات جرة في المشروع
commons-filepload -1.2.1.jar [حزمة jar core تحميل الملف]]
Commons-IO-1.4.JAR [فئات الأدوات ذات الصلة بالتطريز لمعالجة الملفات]
يستخدم:
يمتد فئة exploadservlet من الفئة العامة httpservlet {// upload directory ، احفظ الموارد التي تم تحميلها من الفراغ العام void doget (httpservletrequest request ، httpservletresponse repress) المصنع = جديد diskfileItemFactory () ؛ // 2. قم بإنشاء ملف تحميل ملف Core Class ServleTfilePload Upload = new servletfileUpload (Factory) ؛ // 1. اضبط الحد الأقصى المسموح به للحجم المسموح به: 30 mupload.setFilesizeMax (30*1024*1024) 80Mupload.SetSizemax (80*1024*1024) ؛ // 3. اضبط ترميز اسم ملف نموذج التحميل // مكافئ لـ: request.setcharacterencoding ("UTF-8") ؛ expload.setheaderencoding ("utf-8") ؛ // 3. تحديد: ما إذا كان النموذج الحالي هو نموذج تحميل الملف إذا (epload.ismultipartcontent (request)) {// 4. تحويل البيانات المطلوبة إلى كائنات fileItem ، ثم قم بتغليف قائمة <IPLOATEM> قائمة = upload.parserequest (طلب) ؛ قائمة) {// الحكم: بيانات النص العادية if (item.isformfield ()) {// normal text string string fieldName = item.getFieldName () ؛ // form element name string content = item.getString () ؛ // اسم عنصر النموذج ، البيانات المقابلة //item.getString("utf-8 ") ؛ حدد نظام الترميز. // نموذج اسم عنصر السلسلة = item.getName () ؛ // file name string content = item.getString () ؛ // اسم عنصر النموذج ، نوع سلسلة البيانات المقابلة = item.getContentType () ؛ // نوع الملف inputStream في = item.getInputStream () ؛ // تحميل دفق الملف/** 4 * معالجة الخلفية: أضف علامة فريدة للمستخدم!* /// A. قم بإنشاء معرف سلسلة علامة فريد بشكل عشوائي = uuid.randomuuid (). toString () ؛ // b. splice اسم ملف = id + "#" + name ؛ // احصل على مسار سلسلة التحميل BASE PATH = getServletContext (). getRealPath ("/expload") ؛ // إنشاء ملف ملف الهدف = ملف جديد (المسار ، الاسم) ؛ item.delete () ؛ // حذف الملف المؤقت الذي تم إنشاؤه بواسطة النظام system.out.println () ؛}}} آخر {system.out.println ioException ، UnsupportedEncodingException {/* request.getParameter ("") ؛ // get/postrequest.getquerystring () ؛ // الحصول على البيانات المقدمة عن طريق get request.getInputStream () ؛ // احصل على البيانات المقدمة عن طريق post*// **************** الحصول على بيانات نموذج تحميل الملفات يدويًا ************** /// 1. الحصول على نموذج دفق بيانات الإدخال في = request.getInputStream () ؛ // 2. تحويل الدفق inputstreamreader instream = new inputStreamReader (في ، "utf-8") ؛ // 3. BufferedReader Reader = جديد BufferedReader (instream) ؛ // سلسلة بيانات الإخراج str = null ؛ بينما ((str = reader.readline ())! = null) {system.out.println (str) ؛} // elute reader.close () ؛ instream.close () ؛ in.close () ؛ استجابة httpservletresponse) يلقي servletexception ، ioException {this.doget (طلب ، استجابة) ؛}}قضية:
index.jsp
<Body> <a href = "$ {pagecontext.request.contextpath} /upload.jsp"> تحميل الملف </a>تحميل. jsp
<Body> <form name = "frm_test" Action = "$ {pagecontext.request.contextpath}/fileservlet؟ <type type = "file" name = "file_img"> <br/> إدخال type = "إرسال" value = "submit"> </form> </body>fileservlet.java
/*** عملية تحميل ملف وتنزيلها*Author jie.yuan **/الفئة العامة FileServlet يمتد httpservlet {public void doget (httpservletrequest request ، httpservletsponse response) remspareSponse) ("تحميل" .equals (الطريقة)) {// تحميل تحميل (طلب ، استجابة) ؛} آخر إذا ("القائمة النهائية" .equals (method)) {// أدخل قائمة التنزيل النهائية (طلب ، استجابة) ؛} آخر ("down". httpservletresponse استجابة) يلقي servletexception ، ioException {try {// 1. إنشاء كائن مصنع fileItemFactory Factory = new diskfileitemfactory () ؛ // 2. expload.setFilesizeMax (10*1024*1024) ؛ // حد حجم الملف المفرد expload.setsizemax (50*1024*1024) ؛ // إجمالي حجم الملف limt.setheaderencoding ("UTF-8") ؛ // معالجة الملفات الصينية ترميز // judge if (epload.ismultipartContent (request)) {// 3. تحويل بيانات الطلب إلى قائمة قائمة التجميع <IbourItem> list = upload.parserequest (request) ؛ // traversal for (iteReem item: erv) value = item.getString () ؛ system.out.println (value) ؛} // نموذج نموذج الملف آخر {/************ تحميل ملف **************** /// A. احصل على اسم سلسلة اسم الملف = item.getName () ؛ // --- التعامل مع مشكلة تحميل اسم الملف مكرر --- // A1. احصل على معرف سلسلة Mark الفريد = uuid.randomuuid (). toString () ؛ // A2. اسم ملف اسم ملف = id + "#" + name ؛ // ب. احصل على سلسلة التحميل BASEPATH = getServletContext (). getRealPath ("/تحميل") ؛ // c. قم بإنشاء كائن الملف ليتم تحميل ملف ملف = ملف جديد (BasePath ، name) ؛ // d. تحميل item.write (file) ؛ item.delete () ؛ // حذف الملف المؤقت الذي تم إنشاؤه عند تشغيل المكون}}}}} catch (استثناء e) {E.PrintStackTrace () ؛}}/*** 2. الدليل ، ثم حفظ ؛ القفز إلى قائمة Down.jsp لعرض // 1. تهيئة خريطة مجموعة الخريطة <اسم الملف الذي يحتوي على علامات فريدة ، اسم الملف القصير> ؛ خريطة <string ، string> filenames = new hashmap <string ، string> () ؛ // 2. احصل على دليل التحميل وأسماء الملفات لجميع الملفات ضمن سلسلة BathPath = getServletContext (). getRealPath ("/expload") ؛ // ملف ملف الدليل = ملف جديد (bathpath) ؛ // في الدليل ، جميع قائمة أسماء الملفات [] = file.list () ؛ // translesal ، incapsite (list! i ++) {// اسم FILENAME اسم FILENAME = LIST [i] ؛ // سلسلة قصيرة من الأسماء المختصرة = filename.substring (filename.lastindexof ("#")+1) ؛ // alsapsulateame.put (filename ، filename) ؛}} // 3. request.getRequestDispatcher ("/downlist.jsp"). request.getParameter ("filename") ؛ filename = new string (filename.getBytes ("ISO8859-1") ، "UTF-8") ؛ // احصل اسم الملف صيني ، يجب تنفيذ ترميز عنوان URL = urlencoder.encode (اسم الملف ، "UTF-8") ؛ // قم بتعيين رأس الاستجابة للتنزيل. -1 ؛ بينما ((len = in.read (b))! = -1) {out.write (b ، 0 ، len) ؛} // close.close () ؛ in.close () ؛} public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {this.doget (request ، repress) ؛}}تطوير البريد
عمل التحضير ، بناء البيئة:
1. بناء خادم بريد محلي
خادم EasyMail ، eyoumailserversetup.exe
2. إنشاء حساب بريد إلكتروني جديد
أرسل Zhang San رسالة بريد إلكتروني إلى Li Si.
الخطوة 1:
إنشاء اسم مجال جديد: الأدوات ، إعدادات الخادم ، أدخل Itcast.com في مربع اسم المجال الفردي
الخطوة 2:
إنشاء حساب بريد إلكتروني جديد: [email protected]
3. تثبيت Foxmail
قم بتكوين خادم إرسال البريد الإلكتروني (SMTP): LocalHost 25
خادم تلقي البريد الإلكتروني (POP3): LocalHost 110
قم بإنشاء حساب جديد ويمكنك تلقي رسائل البريد الإلكتروني!
يلاحظ
يلاحظ
إذا كان مشروع ويب ، لأن Javaee يأتي مع وظيفة البريد الإلكتروني ، فقد تكون هناك مشاكل!
نحن بحاجة إلى استخدام وظيفة ملف mail.jar الخاصة بنا! تحتاج إلى حذف حزمة البريد في Javaee!
يستخدم:
لتطوير Javamail ، قدم أولاً ملفات جرة:
Activation.jar [إذا كنت تستخدم JDK1.6 أو أعلى ، لا يمكنك استخدام ملف الجرة هذا] mail.jar [إرسال الحزمة الأساسية عن طريق البريد الإلكتروني]/*** 1. خصائص معلمات البريد prop = خصائص جديدة () ؛ prop.put ("mail.transport.protocol" ، "smtp") ؛ // حدد البروتوكول prop.put ("mail.smtp.host" ، "LocalHost") ؛ // host stmp.qq.comprop.put ("mail.smtp.port" ، 25) ؛ // port prop.put ("mail.smtp.auth" ، "true") ؛ // مصادقة كلمة مرور المستخدم prop.put ("mail.debug" ، "true") ؛ // وضع التصحيح // 1. قم بإنشاء جلسة جلسة بريد = جلسة. قم بإنشاء كائن جسم بريد (كائن بريد إلكتروني كامل) mimemessage رسالة = mimemessage جديد (جلسة) ؛ // 3. تعيين معلمات جسم البريد: //3.1 رسالة العنوان. InternetAdDress ("[email protected]")) ؛ // // رسالة بريد إلكتروني نصية بسيطة. savechanges () ؛ // حفظ البريد الإلكتروني (اختياري) // 4. أرسل نقل النقل = session.getTransport () ؛ trans.connect ("Zhangsan" ، "888") ؛ // إرسال بريد إلى trans.sendmessage (message ، message.getAllRecipients ()) ؛ trans.close () ؛}}مع الصور
/*** البريد الإلكتروني مع موارد الصور*Author jie.yuan **/الفئة العامة APP_2SENDWITHIMG {// معلمات التهيئة الخصائص الثابتة الخاصة prop ؛ // Sender private static internetAdress sendman = null ؛ static {prop = new properties () ؛ // حدد البروتوكول prop.put ("mail.smtp.host" ، "LocalHost") ؛ // host stmp.qq.comprop.put ("mail.smtp.port" ، 25) ؛ // حدد البروتوكول prop.put ("mail.smtp.port" ، 25) ؛ // حدد البروتوكول prop.put ("mail.smtp.port" ، "LocalHost") ؛ // host stmp.qq.comprop.put ("mail.smtp.port" ، 25) ؛ // port prop.put ("mail.smtp.auth" ، "true") ؛ // مصادقة كلمة مرور المستخدم prop.put ("mail.debug" ، "true") ؛ . mimemessage (جلسة) ؛ // 3. تعيين المعلمات: العنوان ، المرسل ، المستلم ، إرسال الوقت ، message. message.setsender (sendman) ؛ message.setRecipient (recientType.to ، new InternetAddress ("[email protected]")) ؛ message.setsentDate (تاريخ جديد ()) ؛/********************** تعيين محتوى البريد الإلكتروني: البريد الإلكتروني متعدد الوظائف للمستخدم (ذات الصلة) ********************** /// 4.1 ، قم ببناء رسالة بريد إلكتروني متعددة الوظائف على mimeMultipart ذات الصلة (mimemultipart new ". = جديد mimebodypart () ؛ mimebodypart المورد = جديد mimebodypart () ؛ // تعيين محتوى محدد: Resource (Picture) String filePath = App_2SendWithImg.class.getResource ("8.jpg"). getPath () ؛ datasource ds = new fileDataSource (ملف جديد (filepath)) ؛ datahandler handler = new datahandler (ds) // قم بتعيين اسم المورد والرجوع إلى المفتاح الأجنبي // تعيين المحتوى المحدد: ب. text content.setContent ("<img src = 'cid: 8.jpg'/> ok!" ، "text/html ؛ charset = utf-8") ؛ alsys.addbodypart (content) ؛ consely.addbodypart (resource) ؛/******* 4.3 إضافة رسائل البريد الإلكتروني المعقدة المبنية إلى رسائل البريد الإلكتروني *******. session.getTransport () ؛ trans.connect ("Zhangsan" ، "888") ؛ trans.sendmessage (message ، message.getAllRecipients ()) ؛ trans.close () ؛}}الصور + المرفقات
/*** 3. البريد الإلكتروني مع موارد الصور والمرفقات*Author jie.yuan **/الفئة العامة APP_3IMGANDATTA {// معلمات التهيئة الخصائص الثابتة الخاصة prop ؛ // Sender private static static sendman = null ؛ static {properties () ؛ prop.put ("mail.transport.protport.protocol" ، "،" ، " // حدد البروتوكول prop.put ("mail.smtp.host" ، "LocalHost") ؛ // host stmp.qq.comprop.put ("mail.smtp.port" ، 25) ؛ // port prop.put ("mail.smtp.auth" ، "true") ؛ // مصادقة كلمة مرور المستخدم prop.put ("mail.debug" ، "true") ؛ . mimemessage (جلسة) ؛ // 3. تعيين المعلمات: العنوان ، المرسل ، المستلم ، إرسال الوقت ، message.setsubject ("البريد مع الصورة") ؛ message.setsender (sendman) ؛ message.setRecipient (recientType.to ، new InternetAddress ("[email protected]")) ؛ message.setsentDate (تاريخ جديد ()) ؛/** تطوير البريد مع المرفق (الصورة)*/// بناء إجمالي كتلة البريد mimemultipart مختلط = جديد mimemultipart ("مختلط") ؛ // -> البريد الكلي سريع ، تعيين إلى message.setContent (mileced) = جديد mimebodypart () ؛ // ضبط على إجمالي كتلة البريد milexed.addbodypart (يسار) ؛ milect.addbodypart (يمين) ؛/******* مرفق ************/سلسلة attr_path = this.getclass (). getResource (" datahandler (attr_ds) ؛ ight.setdatahandler (attr_handler) ؛ right.setFilename ("A.Docx") ؛/********************** تعيين محتوى البريد الإلكتروني: البريد الإلكتروني متعدد الوظائف (مرتبط) ---> ضبط على اليسار. Resource (Picture) String filePath = App_3Imgandatta.Class.getResource ("8.jpg"). getPath () ؛ datasource ds = new FileDataSource (ملف جديد (filepath)) ؛ datahandler handler = new datahandler (ds) ؛ ResourceDatahandler (Handler) ؛ // قم بتعيين اسم المورد والرجوع إلى المفتاح الأجنبي // تعيين المحتوى المحدد: ب. نص محتوى. "888)ما سبق هو رمز المثال لتحميل وتنزيل ملفات Java وإرسال واستلام رسائل البريد الإلكتروني المقدمة إليك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!