تحميل الملف هو وظيفة شائعة جدا على الموقع. يجب عليك تحليل معلمات الطلب مباشرة باستخدام Servlet للحصول على الملفات التي تم تحميلها ، وهو أمر مزعج للغاية. لذلك ، تختار عمومًا استخدام أداة Apache Open Source ، المرفق المشترك. يمكن العثور على حزمة الجرة هذه على موقع Apache الرسمي ، أو تحت مجلد Lib للدعامات. تعتمد وظيفة تحميل الدعامات على هذا التنفيذ.
يعتمد التحميل المشترك على حزمة Common-IO ، لذلك تحتاج أيضًا إلى تنزيل هذه الحزمة. ثم استيراده تحت مسار المشروع الخاص بك.
استخدم الكود على النحو التالي
حزمة OOP.HG.YTU.Servlet ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.util.list ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد Oop.hu.ytu.dao.uploaddomain ؛ استيراد org.apache.commons.fileupload.fileItem ؛ استيراد org.apache.commons.fileupload.disk.diskfileItemFactory ؛ استيراد org.apache.commons.fileupload.servlet.servletfileupload ؛ يمتد تحميل الفئة العامة httpservlet { / *** تعامل مع طلب تحميل المستخدم* / خاص ثابت الطويل الطويل = 1L ؛ DOGED void public (طلب httpservletRequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {// string الوصف = request.getParameter ("وصف") ؛ DiskfileItemFactory Factory = New DiskfileItemFactory () ؛ suppressWarnings ("deprecation" path string = request.getRealPath ("/expload") ؛ // اضبط Disk Buffer Path Factory.SetRepository (ملف جديد (مسار)) ؛ مصنع. expload.setsizemax (-1) ؛ // قم بتعيين حجم حد ملف التحميل ، -1 TRAW {suppresswarnings ("uncheded") list <isterem> list = upload.parserequest (request) ؛ سلسلة va = فارغة ؛ لـ (fileItem item: list) {// string name = item.getFieldName () ؛ if (item.isformfield ()) {// judge ما إذا كان دفق ملف va = item.getString ("utf-8") ؛ // system.out.println (name+"="+va) ؛ /// request.setattribute (الاسم ، القيمة) ؛ } آخر {string value = item.getName () ؛ // سوف يمر اسم المسار الكامل int start = value.lastindexof ("//") ؛ اسم ملف السلسلة = value.subString (ابدأ+1) ؛ // request.setAttribute (الاسم ، اسم الملف) ؛ inputStream in = item.getInputStream () ؛ uploaddomain dao = جديد uploaddomain () ؛ //item.write(new File (RealPath ، filename)) ؛ int index = filename.lastindexof (".") ؛ سلسلة realFilename = filename.substring (0 ، index) ؛ نوع السلسلة = filename.subString (الفهرس+1) ؛ dao.insert (in ، realfilename ، type ، va) ؛ // وضعت في قاعدة البيانات}}} catch (استثناء e) {e.printstacktrace () ؛ }} public void dopost (httpservletrequest request ، httpservletresponse) يلقي servleTexception ، ioException {doget (request ، response) ؛ }} نحدد هنا ما إذا كان الدفق أو المعلمات التي تم تحميلها في النموذج ، مثل إرسال المعلومات في مربع النص ، ثم إدخالها في قاعدة البيانات. رمز إدخال قاعدة البيانات كما يلي
حزمة OOP.HU.YTU.DAO ؛ استيراد java.io.inputstream ؛ استيراد java.sql.connection ؛ استيراد java.sql.preparedStatement ؛ استيراد java.sql.resultset ؛ استيراد OOP.HG.YTU.UTILS.JDBCUTILS ؛ /*** توفير دعم تحميل الملف* Author Administrator**/Public Class UploadDomain {/*** ضع الملف الذي تم تحميله في قاعدة البيانات*/public void insert (inputStream في اسم ملف السلسلة ، نوع السلسلة ، الوصف) يلقي الاستثناء {// اكتب صورة إلى اتصال قاعدة البيانات conn = null ؛ أعدت PS = NULL ؛ resultset rs = null ؛ System.out.println (وصف) ؛ حاول {// 2. إنشاء اتصال conn = jdbcutils.getConnection () ؛ // 3. إنشاء سلسلة عبارة sql = "insert في fileUpload (ملف ، اسم الملف ، النوع ، des) قيم (؟ ،؟ ،؟ ،؟)" ؛ ps = conn.preparestatement (SQL) ؛ Ps.SetBlob (1 ، في) ؛ Ps.SetString (2 ، اسم الملف) ؛ ps.SetString (3 ، النوع) ؛ ps.SetString (4 ، وصف) ؛ // 4. تنفيذ البيان ps.executeupdate () ؛ in.close () ؛ } أخيرًا {jdbcutils.free (rs ، ps ، conn) ؛ }}} قد تواجه حد حجم أسئلة سعر قاعدة البيانات الافتراضية. تحتاج إلى تغيير التكوين التالي ضمن my.ini ضمن دليل تثبيت MySQL.
[mysqld]
max_allowed_packet = 64m
هذا كل شيء. بالطبع ، انتبه إلى تنسيق الترميز. قم بتحميل الملف وإنجازه. شيء آخر هو أنه تم تعيين أحد أسماء الأعمدة الخاصة بي ، والنتيجة هي أنني تعارضت مع كلمات MySQL المحجوزة ، ولا يمكن إدراج المعلومات. يجب أن تنتبه إليها في المستقبل.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.