في هذه المقالة ، نصف كيفية استخدام SPRING BOOT لتحميل الملفات إلى نظام الملفات الموزعة FastDFs.
سيتم بناء هذا المشروع على أساس المشروع السابق.
1. تكوين حزمة POM
نستخدم أحدث إصدار من Spring Boot 1.5.9 ، يستخدم JDK 1.8 ، Tomcat8.0.
<Rependency> <roupend> org.csource </rougeid> <StifactId> fastdfs-client-java </shintifactid> <sophy> 1.27-snapshot </version> </sependency>
تمت إضافة حزمة FastDFS-Client-Java للاتصال بآبار واجهات برمجة تطبيقات FastDFS.
2. ملف التكوين
إضافة ملف fdfs_client.conf في دليل الموارد
connect_timeout = 60network_timeout = 60charset = utf-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = 123456tracker_server = 192.168.53.85:22122222. 192.168.53.86:22122
يقوم ملف التكوين بتعيين وقت مهلة الاتصال وتنسيق الترميز وعنوان Tracker_Server وغيرها من المعلومات.
مرجع للحصول على التفاصيل: fastdfs-client-java
3. تغليف فئة أداة تحميل FastDFS
تغليف FastDFSFile ، وتتضمن معلومات الملف الأساسية اسم الملف ، المحتوى ، نوع الملف ، المؤلف ، إلخ.
الفئة العامة fastdfsfile {اسم سلسلة خاصة ؛ محتوى بايت خاص [] ؛ سلسلة خاصة سلسلة خاصة MD5 ؛ مؤلف سلسلة خاصة // حذف getter و setterتغليف فئة FastDFSClient ، بما في ذلك الطرق الشائعة الاستخدام مثل التحميل والتنزيل والحذف.
أولاً ، اقرأ معلومات التكوين المقابلة عند تحميل الفئة وتهيئتها.
ثابت {try {string filepath = new classPathResource ("fdfs_client.conf"). getFile (). getabsolutepath () ؛؛ clientGlobal.init (filepath) ؛ trackerClient = new trackerClient () ؛ trackerserver = trackerClient.getConnection () ؛ Storageserver = trackerClient.getStorestorage (Trackerserver) ؛ } catch (استثناء e) {logger.error ("عميل fastdfs init init!" ، e) ؛ }}تحميل الملف
السلسلة الثابتة العامة [] تحميل (ملف fastdfsfile) {logger.info ("اسم الملف:" + file.getName () + "طول الملف:" + file.getContent (). الطول) ؛ nameValuePair [] meta_list = new nameValUepair [1] ؛ meta_list [0] = new nameValUepair ("uptor" ، file.getauthor ()) ؛ وقت بدء طويل = system.currentTimeMillis () ؛ String [] UploadResults = null ؛ Try {StorageClient = new StorageClient (Trackerserver ، Storageserver) ؛ UploadResults = storageClient.upload_file (file.getContent () ، file.getext () ، meta_list) ؛ } catch (ioException e) {logger.error ("io استثناء عند تحميل الملف:" + file.getName () ، e) ؛ } catch (استثناء e) {logger.error ("استثناء غير IO عند تحميل الملف:" + file.getName () ، e) ؛ } logger.info ("upload_file time use:" + (system.currentTimeMillis () - startTime) + "MS") ؛ if (UploadResults == null) {logger.error ( } String GroupName = UploadResults [0] ؛ سلسلة RemoteFilename = UploadResults [1] ؛ logger.info ("تحميل ملف بنجاح !!! إرجاع التحميل ؛}استخدم العميل StorageClient المقدمة من FastDFs لتحميل الملفات ، وأخيراً إرجاع نتيجة التحميل.
احصل على معلومات الملف بناءً على اسم GroupName واسم الملف.
FileInfo getFile (String GroupName ، String RemoteFilename) {try {StorageClient = new StorageClient (trackerserver ، Storageserver) ؛ إرجاع storageclient.get_file_info (GroupName ، RemoteFilename) ؛ } catch (ioException e) {logger.error ("استثناء io: الحصول على ملف من Fast DFS فشل" ، e) ؛ } catch (استثناء e) {logger.error ("استثناء غير IO: الحصول على ملف من Fast DFS فشل" ، e) ؛ } إرجاع فارغ ؛}قم بتنزيل الملف
Public Static InputStream DownFile (String GroupName ، String RemoteFilename) {try {StorageClient = new StorageClient (trackerserver ، Storageserver) ؛ byte [] filebyte = storageclient.download_file (groupName ، remoteFilename) ؛ inputStream ins = new ByTearRayInputStream (filebyte) ؛ إرجاع } catch (ioException e) {logger.error ("استثناء io: الحصول على ملف من Fast DFS فشل" ، e) ؛ } catch (استثناء e) {logger.error ("استثناء غير IO: الحصول على ملف من Fast DFS فشل" ، e) ؛ } إرجاع فارغ ؛}حذف الملفات
Public Static Void DeleteFile (String GroupName ، String RemoteFilename) يلقي الاستثناء {StorageClient = new StorageClient (Trackerserver ، Storageserver) ؛ int i = storageClient.delete_file (groupName ، RemoteFilename) ؛ logger.info ("حذف الملف بنجاح !!!" + i) ؛}عند استخدام FastDFS ، ما عليك سوى الاتصال بالطريقة المقابلة لـ FastDFSClient.
4. اكتب فئة التحكم في التحميل
اقرأ معلومات الملف من MultipartFile وقم بتحميل الملف إلى مجموعة FastDFS باستخدام FastDFSclient.
السلسلة العامة SaveFile (multipartfile multipartfile) يلقي ioException {string [] fileAbsolutePath = {} ؛ اسم ملف السلسلة = multipartfile.getoriginalfilename () ؛ String ext = filename.substring (filename.lastindexof (".") + 1) ؛ byte [] file_buff = null ؛ inputStream inputStream = multipartfile.getInputStream () ؛ if (inputStream! = null) {int len1 = inputStream.available () ؛ file_buff = new byte [len1] ؛ inputStream.Read (file_buff) ؛ } inputStream.close () ؛ fastdfsfile file = new fastdfsfile (filename ، file_buff ، ext) ؛ حاول {fileAbsolutePath = fastdfsclient.upload (file) ؛ . } if (FileAbsolutePath == null) {logger.error ("فشل ملف التحميل ، يرجى التحميل مرة أخرى!") ؛ } string path = fastdfsclient.getTrackerUrl ()+fileAbsolutePath [0]+"/"+fileAbsolutePath [1] ؛ مسار العودة ؛}طلب التحكم ، اتصل بالطريقة أعلاه SaveFile ().
postmapping ("/expload") // التعليق التوضيحي الجديد منذ 4.3public string singlefileupload (requestparam ("file") ملف multipartfile ، إعادة توجيه tributes redirecttributes) {if (file.isempty ())) إرجاع "إعادة التوجيه: UploadStatus" ؛ } جرب {// احصل على الملف وحفظه في مكان ما مسار السلسلة = saveFile (ملف) ؛ redirectattributes.addflashattribute ("message" ، "تم تحميلك بنجاح" + file.getoriginalfilename () + "" ") ؛ redirectattributes.addflashattribute ("path" ، "url path path '" + path + "'") ؛ } catch (استثناء e) {logger.error ("فشل تحميل ملف" ، e) ؛ } العودة "Redirect:/UploadStatus" ؛}بعد نجاح التحميل ، عرض مسار الملف إلى الصفحة ، والعروض هي كما يلي:
قم بزيارة عنوان URL هذا في متصفحك ويمكنك أن ترى أنه يتم عرضه بنجاح من خلال FastDFs:
يتم ذلك باستخدام SPRING BOOT لدمج FastDFs.
نموذج الرمز - جيثب
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.