كيفية تحميل وتنزيل الملفات في خلفية Springboot؟
شارك مشروع حديث في تحميل الملف وتنزيله. يستخدم تحميل الواجهة الأمامية المكون الإضافي Baidu WebUploader. لا يزال استخدام هذا المكون الإضافي قيد البحث وسيتم فرزه وتسجيله في المستقبل. تقدم هذه المقالة بشكل أساسي معالجة تحميل الملفات والتنزيل في خلفية Springboot.
تحميل ملف واحد
. } // احصل على اسم ملف اسم الملف = file.getoriginalfilename () ؛ logger.info ("اسم الملف الذي تم تحميله هو:" + اسم الملف) ؛ // احصل على اسم لاحقة لسلسلة الملف اللاسلكينام = filename.substring (filename.lastindexof (".")) ؛ logger.info ("اسم لاحقة الملف هو:" + factixname) ؛ // قم بتعيين سلسلة مسار تخزين الملفات filepath = "d: // aim //" ؛ مسار السلسلة = filepath + اسم الملف + اللاحقة ؛ ملف dest = ملف جديد (path) ؛ // اكتشف ما إذا كان الدليل موجودًا إذا (! dest.getParentFile (). } catch (alfortalStateException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } العودة "فشل التحميل" ؛}إذا كنت ترغب في تعديل مسار الملف واسم الملف ، فما عليك سوى تعديل FilePath واسم الملف.
تحميل ملفات متعددة
// multi-file exploadrequestmapping (value = "/uploadmore" ، method = requestMethod.post) responsebublicpublic string conferfileUpload (httpservletrequest request) {list <multipartfile> files = (multiparthtttpservledrequest) request) .getfiles ("file") ؛ ملف multipartfile = فارغ ؛ BufferedOutputStream Dream = NULL ؛ لـ (int i = 0 ؛ i <files.size () ؛ ++ i) {file = files.get (i) ؛ String filepath = "d: // aim //" ؛ if (! file.isempty ()) {try {byte [] bytes = file.getBytes () ؛ دفق = جديد bufferedOutputStream (ملف جديد fileOutputStream (ملف جديد (filepath + file.getoriginalfilename ())))) } catch (استثناء e) {Stream = null ؛ إرجاع "th" + i + "تحميل ملف expload ==>" + e.getMessage () ؛ }} آخر {return "th" + i + "فشل التحميل لأن الملف فارغ" ؛ }} الإرجاع "تم تحميله بنجاح" ؛}تنزيل الملف
. ملف جديد (RealPath ، اسم الملف) ؛ if (file.exists ()) {response.setContentType ("Application/Force-Download") ؛ // قم بتعيين التنزيل القسري دون فتح استجابة. FileInputStream Fis = NULL ؛ BufferedInputStream BIS = NULL ؛ حاول {fis = new FileInputStream (file) ؛ BIS = جديد bufferedInputStream (FIS) ؛ OutputStream OS = response.getOutputStream () ؛ int i = bis.read (buffer) ؛ بينما (i! = -1) {os.write (buffer ، 0 ، i) ؛ i = bis.read (buffer) ؛ } system.out.println ("النجاح") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {if (bis! = null) {try {bis.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} if (fis! = null) {try {fis.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}}} إرجاع فارغ ؛}تكوين MultipartConfig
يمكنك استخدام فئة تكوين MultipartConfig للتحكم في تحميل الملفات على مستوى العالم.
ConfigurationPublic class multipartConfig {bean public multipartConfigElement multipartConfiSelement () {multipartConfigfactory factory = multipartConfiGfactory () ؛ // حدد حد حجم الملف ، إذا تجاوزت الصفحة هذا الحجم ، فسيتم طرح معلومات الاستثناء المصنع. // kb ، mb // قم بتعيين إجمالي بيانات البيانات الكلية الحجم. // قم بتعيين الملف المؤقت مسار المجلد // factory.setLocation ("E: // test //") ؛ // إذا كان الملف أكبر من هذه القيمة ، فسيتم تخزينه كملف. إذا كانت أقل من هذه القيمة ، فسيتم تخزين الملف في الذاكرة. الافتراضي هو 0 // factory.setMaxRequestSize (0) ؛ Return Factory.CreateMultiPartConfig () ؛ }}أشياء يجب ملاحظتها
يجب أن يكون تنسيق نقل الملفات الأمامية والخلفية متعددة الفصائل/النموذج
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.