تقارن هذه المقالة مثالين على تحميل الملف لمساعدة الجميع على تعلم وظيفة تحميل ملف Java بشكل أفضل. المحتوى المحدد كما يلي
1. رمز تحميل مرفق جافا
controllerpublic class uploadfile يمتد basejsoncontroller {/** * upload upload * * param request * param creativefile * param respons 1. لضمان أمان الخادم ، يجب وضع الملف الذي تم تحميله في دليل لا يمكن الوصول إليه مباشرة من قبل العالم الخارجي ، كما هو الحال في دليل الويب. * 2. لمنع الكتابة فوق الملف ، يجب إنشاء اسم ملف فريد لتحميل الملف. * 3. لمنع الكثير من الملفات من الظهور تحت دليل ، يجب عليك استخدام خوارزمية التجزئة لتفكيك التخزين. * 4. يجب أن تكون القيمة القصوى للملفات التي تم تحميلها محدودة. * 5. للحد من نوع الملفات التي تم تحميلها ، عند استلام اسم الملف الذي تم تحميله ، حدد ما إذا كان اسم لاحقة قانونيًا. *// احصل على دليل حفظ الملف الذي تم تحميله ، وقم بتخزين الملف الذي تم تحميله في دليل الويب الخاص بـ Web ، ولا يسمح بالوصول المباشر من العالم الخارجي إلى ضمان أمان سلسلة الملفات المحملة SavePath = request.getSession (). getServletContext (). // دليل حفظ الملف المؤقت الذي تم إنشاؤه أثناء تحميل سلسلة temppath = request.getSession (). getServletContext (). ملف tmpfile = ملف جديد (temppath) ؛ if (! tmpfile.exists ()) {// إنشاء دليل مؤقت tmpfile.mkdirs () ؛ } // يطالب الرسالة jsonarray arr = new jsonarray () ؛ الخريطة <string ، Object> map = null ؛ inputStream في = null ؛ fileOutputStream Out = null ؛ جرب {// استخدم مكون تحميل ملف Apache لمعالجة خطوات تحميل الملف: // 1. إنشاء DiskfileItemFactory Factory DiskfileItemFactory Factory = New DiskfileItemFactory () ؛ // اضبط حجم المخزن المؤقت للمصنع. عندما يتجاوز حجم الملف الذي تم تحميله حجم المخزن المؤقت ، سيتم إنشاء ملف مؤقت وتخزينه في الدليل المؤقت المحدد. المصنع. إذا لم يتم تحديدها ، فإن حجم المخزن المؤقت هو 10 كيلو بايت بشكل افتراضي. // قم بتعيين دليل التخزين للملف المؤقت الذي تم إنشاؤه أثناء تحميل Factory.SetRepository (TMPFile) ؛ // 2. قم بإنشاء ملف تحميل ملف servletfileUpload = جديد servletfileupload (المصنع) ؛ // supert repload repoved prograd.setProgressRistener (New ProgressListener () {public void Update (long pbytesread ، pcontentLength long ، int arg2) {system.out.println ("حجم الملف هو:" + pcontentlength + "، تمت معالجته حاليًا:" + pbytesread) ؛}}) ؛ // حل التحميل الصيني المشوهة. // 3. تحديد ما إذا كانت البيانات المقدمة هي بيانات نموذج التحميل إذا (! servletFileUpload.ismultipartContent (طلب)) {// الحصول على إرجاع البيانات وفقًا للطريقة التقليدية ؛ } // قم بتعيين الحد الأقصى لحجم الملف الفردي الذي تم تحميله ، والذي يتم تعيينه حاليًا على 1024*1024 بايت ، أي 20 ميجابايت تحميل. // قم بتعيين أقصى قيمة لإجمالي عدد الملفات التي تم تحميلها. القيمة القصوى = مجموع الأحجام القصوى للملفات المتعددة التي تم تحميلها في نفس الوقت. يتم تعيينه حاليًا على تحميل 40 ميغابايت. SetSizemax (1024*1024*40) ؛ // 4. استخدم محلل ServletFileUpload لتحليل البيانات التي تم تحميلها. تُرجع نتيجة التحليل قائمة <IberItem>. يتوافق كل fileItem مع عنصر الإدخال الخاص بنموذج النموذج suppressWarnings ("Unchected") القائمة <iredItem> list = Upload.ParsereQuest (request) ؛ لـ (fileItem item: list) {// إذا كانت بيانات عناصر الإدخال العادية مغلفة في fileItem if (item.isformfield ()) {string name = item.getfieldName () ؛ // حل المشكلة المشوهة الصينية لبيانات عناصر الإدخال العادية قيمة السلسلة = item.getString ("UTF-8") ؛ // value = new string (value.getBytes ("ISO8859-1") ، "UTF-8") ؛ System.out.println (name + "=" + value) ؛ } آخر {// إذا كان عنصر الملف مغلفًا في الملف الذي تم تحميله // احصل على اسم الملف المحمّل ، اسم filename = item.getName () ؛ if (filename == null || filename.trim (). يساوي ("")) {متابعة ؛ } // ملاحظة: تختلف أسماء الملفات المقدمة بواسطة متصفحات مختلفة. تقوم بعض المتصفحات بإرسال أسماء الملفات بالمسارات ، مثل: c: /a/b/1.txt ، في حين أن بعضها مجرد أسماء ملفات بسيطة ، مثل: 1.txt // معالجة جزء المسار من اسم ملف الملف الذي تم الحصول عليه تم الحصول عليه فقط ، يتم الاحتفاظ بجزء اسم الملف فقط في الملف = fileName.subString (fitlename.lastindexof ("//")+1) ؛ // احصل على امتداد سلسلة الملفات التي تم تحميلها filextname = filename.substring (filename.lastindexof (".")+1) ؛ // إذا كنت بحاجة إلى الحد من نوع الملف الذي تم تحميله ، فيمكنك استخدام ملحق الملف لتحديد ما إذا كان نوع الملف الذي تم تحميله قانونيًا إذا (stringUtils.equals (filextname ، "rar") || stringutils.equals (filextname ، "zip")) } /*************** / /احصل على دفق الإدخال للملف الذي تم تحميله في العنصر = item.getInputStream () ؛ /******************///احصل على اسم الملف المحفوظ SaveFilename = Makefilename (اسم الملف) ؛ // احصل على ملف حفظ سلسلة Directory RealSavePath = MakePath (SaveFilename ، SavePath) ؛ // قم بإنشاء دفق إخراج ملف Out = جديد fileOutputStream (RealSavePath + "//" + SaveFilename) ؛ // إنشاء عازلة بايت عازلة [] = بايت جديد [1024] ؛ // تحديد ما إذا كانت البيانات الموجودة في دفق الإدخال قد تمت قراءة int int = 0 ؛ // تقرأ الحلقة دفق الإدخال في المخزن المؤقت ، (len = in.Read (buffer))> 0 يعني أنه لا يزال هناك بيانات في ((len = in.read (buffer))> 0) {// استخدم FileOtputStream Treatm لكتابة بيانات المخزن المؤقت إلى الدليل المحدد (SavePath + " + } // أغلق دفق الإدخال in.close () ؛ // أغلق دفق الإخراج Out.Close () ؛ // حذف الملف المؤقت الذي تم إنشاؤه عند معالجة تحميل الملف. delete () ؛ map = new hashmap <string ، object> () ؛ map.put ("SaveFilename" ، SaveFilename) ؛ map.put ("realsavepath" ، realsavepath) ؛ arr.add (MAP) ؛ }} returnsuccessjson ("eploadbase.filesizeLiMiteDexceptexception e) {E.PrintStackTrace () ؛ returnfailjson ( ReturnFailjson (E.GetMessage () ، "الحجم الإجمالي للملف المحمّلة". in.close () REGRURN UUID + "_" + الاسم الأصلي للملف */السلسلة الخاصة makefilename (اسم ملف السلسلة) {//2.jpg // لمنع الكتابة فوق الملف ، يجب إنشاء اسم ملف فريد لتحميل ملف uuid.randomuid (). toString () + "_" } /** * To prevent too many files from appearing in a directory, you need to use the hash algorithm to break up the storage* @Method: makePath * @Description: * @Anthor:xuwentao * * @param filename File name, generate storage directory based on the file name* @param savePath File storage path* @return New storage directory */ private String makePath(String filename,String SavePath) {// احصل على قيمة hashcode لاسم الملف ، وما تحصل عليه هو عنوان اسم ملف كائن السلسلة في memory int hashcode = filename.hashCode () ؛ int dir1 = hashcode & 0xf ؛ // 0--15 int dir2 = (hashcode & 0xf0) >> 4 ؛ // 0-15 // إنشاء سلسلة حفظ جديدة dir = savepath + "//" + dir1 + "//" + dir2 ؛ // upload/2/3 upload/3/5 // file يمكن أن يمثل ملف الملف والدلالة ملف = ملف جديد (dir) ؛ // إذا لم يكن الدليل موجودًا إذا (! file.exists ()) {// ، قم بإنشاء file.mkdirs () ؛ } إرجاع دير ؛ }}2. Java تحميل رمز السيرة الذاتية
/ ***التحميل السيرة الذاتية*فشل إنشاء ملف 1-استثمار 3-Upload فشل 4-ترف لم يتم الحصول عليه من 5 أطراف لم يتم حذفه 6-please كلمة التحميل ، excel ، ppt ، ملفات pdf*//*path patherator: المستخدمة في نظام التشغيل التكيفي*/ private static string file_separator = system.getproperties (). / ** * تحميل ملف * * param fileio * param oldcontracturl * request request * return educt (العنوان النسبي ، عنوان غير absolute) */ @ @ @override upload (multipartfile fileio ، string OldContracturl ، httpservletrequest request) // حذف الملفات والمجلدات إذا (OldContractUrl! = null) {String OldDirectory = OldContractUrl.substring (5 ، OldContractUrl.lastindexof (file_separator)) ؛ ملف الملف = ملف جديد (Uploadurl + OldDirectory) ؛ العلم المنطقي = deletedir (ملف) ؛ if (! flag) {logger.error ("فشل حذف الملف القديم") ؛ العودة "5" ؛ }} // تحميل ملف السيرة الذاتية الجديدة الآن = System.CurrentTimeMillis () ؛ UploadUrl = Uploadurl + file_separator + now + file_separator ؛ String Resumename = "" ؛ if (! fileio.isempty ()) {resumename = stringUtils.deletewhitespace (fileio.getoriginalfilename ()) ؛ // ugge file fuckix/*string faceix = resumename.substring (resumename.lastindexof (".") ، resumename.length ()) .ToLowerCase () ؛ if (! logger.error ("لا كلمة ، excel ، ppt ، ملفات pdf") ؛ العودة "6" ؛ }*/} آخر {logger.error ("ملف لم يتم الحصول عليه") ؛ العودة "4" ؛ } file dir = new file (uploadurl) ؛ if (! dir.exists ()) {dir.mkdirs () ؛ } File TargetFile = ملف جديد (Uploadurl + resumename) ؛ if (! targetfile.exists ()) {try {targetfile.createNewFile () ؛ } catch (ioException e) {logger.error ("فشل إنشاء الملف" ، e) ؛ العودة "1" ؛ }} حاول {fileio.transferto (targetFile) ؛ } catch (alficalstateException e) {logger.error ("استثناء الجملة" ، e) ؛ العودة "2" ؛ } catch (ioexception e) {logger.error ( العودة "3" ؛ } إرجاع file_separator + "ملفات" + file_separator + الآن + file_separator + resumename ؛ } /*** حذف جميع الملفات بشكل متكرر في الدليل وجميع الملفات الموجودة في الدليل الفرعي* param diR دليل الملف الذي يتم حذفه* return boolean إرجاع "صحيح" إذا كانت جميع الحذف ناجحة. * في حالة فشل الحذف ، تتوقف الطريقة عن محاولة * حذف وإرجاع "خطأ". */ public boolean deletedir (file dir) {if (dir.isdirectory ()) {string [] children = dir.list () ؛ // حذف بشكل متكرر الدليل الفرعي في الدليل (int i = 0 ؛ i <children.length ؛ i ++) {boolean success = deletedir (ملف جديد (dir ، الأطفال [i])) ؛ إذا (! النجاح) {return false ؛ }}} // الدليل فارغ في هذا الوقت ، يمكنك حذف return dir.delete () ؛ }ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وإتقان مهارات تحميل ملفات Java.