Dalam artikel ini, kami menjelaskan cara menggunakan Spring Boot untuk mengunggah file ke FastDFS Sistem File Terdistribusi.
Proyek ini akan dibangun berdasarkan proyek sebelumnya.
1. Konfigurasi Paket POM
Kami menggunakan versi terbaru Spring Boot 1.5.9, JDK menggunakan 1.8, tomcat8.0.
<dependency> <GroupId> org.csource </groupid> <ArTifactId> fastdfs-client-java </stifactid> <version> 1.27-snapshot </version> </dependency>
Menambahkan paket FastDFS-Client-Java untuk memanggil API terkait FASTDFS.
2. File Konfigurasi
Tambahkan file fdfs_client.conf di direktori sumber daya
connect_timeout = 60network_timeout = 60charset = UTF-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = 123456tracker_server = 192.168.53.85:22122tracker_server = 192.168.53.86:22122
File konfigurasi menetapkan waktu batas waktu koneksi, format pengkodean, alamat tracker_server dan informasi lainnya.
Referensi untuk detail: fastdfs-client-java
3. Encapsulate kelas alat unggah FastDFS
Encapsulate FastDFSFile, dan informasi file dasar termasuk nama file, konten, jenis file, penulis, dll.
kelas publik fastdfsfile {name string private; konten byte pribadi []; Private String ext; Private String MD5; penulis string pribadi; // hilangkan pengambil dan setterEncapsulate kelas FastDFSClient, termasuk metode yang umum digunakan seperti mengunggah, unduh, dan hapus.
Pertama, baca informasi konfigurasi yang sesuai saat kelas dimuat dan menginisialisasi itu.
static {try {string filePath = new classpathResource ("fdfs_client.conf"). getFile (). getAbsolutePath () ;; Clientglobal.init (filepath); trackerClient = trackerClient baru (); trackerserver = trackerClient.getConnection (); StorageServer = TrackerClient.GetStorAstorage (Trackerserver); } catch (exception e) {logger.error ("fastdfs client init fail!", e); }}Unggahan file
public static string [] unggah (file fastdfsfile) {logger.info ("Nama file:" + file.getName () + "Panjang file:" + file.getContent (). Panjang); Namevaluepair [] meta_list = new namevaluepair [1]; meta_list [0] = new namevaluePair ("penulis", file.getauthor ()); Long StartTime = System.CurrentTimeMillis (); String [] unggahResults = null; coba {StorageClient = StorageClient baru (Trackerserver, StorageServer); unggahResults = StorageClient.upload_file (file.getContent (), file.getext (), meta_list); } catch (ioException e) {logger.error ("IO Exception Saat mengunggah file:" + file.getName (), e); } catch (Exception e) {logger.error ("Non IO Exception Saat mengunggah file:" + file.getName (), e); } logger.info ("unggah_file waktu yang digunakan:" + (System.currentTimeMillis () - startTime) + "ms"); if (unggahResults == null) {logger.error ("Unggah file gagal, kode kesalahan:" + StorageClient.GetErrorCode ()); } String groupName = unggahResults [0]; String remoteFileName = unggahResults [1]; Logger.info ("Unggah file berhasil !!!" + "group_name:" + groupName + ", RemoteFileName:" + "" + remoteFileName); return unggahan;}Gunakan StorageClient klien yang disediakan oleh FastDFS untuk mengunggah file, dan akhirnya mengembalikan hasil unggah.
Dapatkan informasi file berdasarkan nama GroupName dan file.
public static FileInfo getFile (String GroupName, String RemoteFileName) {coba {StorageClient = new StorageClient (Trackerserver, StorageServer); return storageClient.get_file_info (groupName, remotefileName); } catch (ioException e) {logger.error ("IO Exception: Dapatkan file dari Fast DFS gagal", e); } catch (Exception e) {Logger.Error ("Non IO Exception: Dapatkan File dari DFS Fast Gagal", E); } return null;}Unduh file
public static inputStream downFile (String groupName, String remoteFileName) {coba {StorageClient = new StorageClient (Trackerserver, StorageServer); byte [] FileByte = StorageClient.Download_File (GroupName, RemoteFileName); InputStream INS = new ByteArrayInputStream (FileByTe); mengembalikan INS; } catch (ioException e) {logger.error ("IO Exception: Dapatkan file dari Fast DFS gagal", e); } catch (Exception e) {Logger.Error ("Non IO Exception: Dapatkan File dari DFS Fast Gagal", E); } return null;}Hapus file
public static void deleteFile (String groupName, String RemoteFileName) melempar Exception {StorageClient = New StorageClient (Trackerserver, StorageServer); int i = StorageClient.Delete_File (GroupName, RemoteFileName); Logger.info ("Hapus file berhasil !!!" + i);}Saat menggunakan FastDFS, cukup panggil metode FastDFSClient yang sesuai.
4. Tulis kelas kontrol unggahan
Baca informasi file dari MultipartFile dan unggah file ke cluster FastDFS menggunakan FastDFSClient.
string publik saveFile (multipartfile multipartFile) melempar ioException {string [] fileAbsolutePath = {}; String filename = 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 = byte baru [len1]; inputStream.read (file_buff); } inputStream.close (); Fastdfsfile file = fastdfsfile baru (nama file, file_buff, ext); coba {fileAbsolutePath = fastdfsclient.upload (file); // Unggah ke fastdfs} catch (Exception e) {logger.error ("Unggah file pengecualian!", e); } if (fileAbsolutePath == null) {logger.error ("Upload file gagal, silakan unggah lagi!"); } String path = fastdfsclient.getTrackerUrl ()+fileAbsolutePath [0]+"/"+fileAsolutePath [1]; return path;}Kontrol permintaan, hubungi metode di atas saveFile ().
@Postmapping ("/unggah") // anotasi baru sejak 4.3public string singleFileUpload (@RequestParam ("file") file multipartfile, redirectattributes redirectattributes) {if (file.isempty ()) {redirectattributes) {if file. " return "Redirect: unggahstatus"; } coba {// Dapatkan file dan simpan di suatu tempat string path = saveFile (file); redirectattributes.addflashattribute ("pesan", "Anda berhasil mengunggah '" + file.getoriginalFileName () + "'"); redirectattributes.addflashattribute ("path", "file path url '" + path + "'"); } catch (exception e) {logger.error ("unggah file gagal", e); } return "redirect:/unggahtatus";}Setelah unggahan berhasil, tampilkan jalur file ke halaman, dan rendering adalah sebagai berikut:
Kunjungi URL ini di browser Anda dan Anda dapat melihat bahwa itu berhasil ditampilkan melalui FastDFS:
Ini dilakukan dengan menggunakan boot musim semi untuk mengintegrasikan FASTDFS.
Kode Sampel - GitHub
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.