In diesem Artikel beschreiben wir, wie Spring Boot zum Hochladen von Dateien in verteiltes Dateisystem FastDFS verwendet wird.
Dieses Projekt wird auf der Grundlage des vorherigen Projekts aufgebaut.
1. POM -Paketkonfiguration
Wir verwenden die neueste Version 1.5.9 von Spring Boot, JDK verwendet 1.8, tomcat8.0.
<Depopenty> <gruppe> org.cSource </Groupid> <artifactId> fastdfs-client-java </artifactId> <version> 1.27-Snapshot </Version> </abhängig>
Das FastDFS-Client-Java-Paket fügte hinzu, um FastDFS-bezogene APIs aufzurufen.
2. Konfigurationsdatei
Fügen Sie die Datei fdfs_client.conf in das Ressourcenverzeichnis hinzu
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
Die Konfigurationsdatei legt die Verbindungszeitüberschreitungszeit, das Codierungsformat, die Tracker_Server -Adresse und andere Informationen fest.
Referenz für Details: Fastdfs-Client-Java
3.. Kapitulieren Sie die FastDFS -Upload -Toolklasse
Einkapseln Sie FastDFSFile, und die grundlegenden Dateiinformationen enthalten Dateiname, Inhalt, Dateityp, Autor usw.
öffentliche Klasse Fastdfsfile {private String -Name; privates Byte [] Inhalt; private Zeichenfolge ext; private String MD5; privater String -Autor; // Gotter und Setter weglassenKapitulieren Sie die FastDFSClient -Klasse, einschließlich häufig verwendeter Methoden wie Upload, Herunterladen und Löschen.
Lesen Sie zunächst die entsprechenden Konfigurationsinformationen, wenn die Klasse geladen wird, und initialisieren Sie sie.
static {try {String filepath = new classPathresource ("fdfs_client.conf"). getFile (). getAbsolutepath () ;; Clientglobal.init (filepath); TrackerClient = new TrackerClient (); TrackerServer = TrackerClient.getConnection (); storageServer = TrackerClient.getStorEsage (TrackerServer); } catch (Ausnahme e) {logger.Error ("FASTDFS -Client init fail!", E); }}Datei -Upload
public static String [] Upload (FASTDFSFILE -Datei) {logger.info ("Dateiname:" + file.getName () + "Dateilänge:" + file.getContent (). Länge); NAMEVALEPAIR [] meta_list = new namevaluepair [1]; meta_list [0] = new nameValuePair ("Autor", File.getAuthor ()); Long start time = system.currenttimemillis (); String [] UploadResults = null; try {storageClient = new StorageClient (TrackerServer, StorageServer); UploadResults = storageClient.Upload_file (Datei.getContent (), File.GetExt (), meta_list); } catch (ioException e) {logger.Error ("IO -Ausnahme, wenn die Datei hochladen:" + file.getName (), e); } catch (Ausnahme e) {logger.Error ("Non -io -Ausnahme, wenn die Datei hochladen:" + file.getName (), e); } logger.info ("Upload_file -Zeit verwendet:" + (System.currentTimemillis () - StartTime) + "MS"); if (UploadResults == NULL) {logger.Error ("Datei fehlschlagen, Fehlercode:" + storageClient.getErrorCode ()); } String GroupName = UploadResults [0]; String remoteFileName = UploadResults [1]; logger.info ("Datei erfolgreich hochladen !!!" + "Group_Name:" + GroupName + ", RemoteFileName:" + "" + remoteFileName); uploadResults zurückgeben;}Verwenden Sie den von FastDFS bereitgestellten Client StorageClient, um Dateien hochzuladen, und geben Sie schließlich das Hochladenergebnis zurück.
Holen Sie Dateiinformationen basierend auf GroupName und Dateinamen.
public static FileInfo getFile (String GroupName, String RemoteFileName) {try {storageClient = new StorageClient (TrackerServer, StorageServer); return storageclient.get_file_info (GroupName, RemoteFileName); } catch (ioException e) {logger.Error ("IO -Ausnahme: Datei von FAST DFS fehlgeschlagen", e); } catch (Ausnahme e) {logger.Error ("Nicht -IO -Ausnahme: Datei von FAST DFS fehlgeschlagen", e); } return null;}Laden Sie die Datei herunter
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 (DateiByte); return Ins; } catch (ioException e) {logger.Error ("IO -Ausnahme: Datei von FAST DFS fehlgeschlagen", e); } catch (Ausnahme e) {logger.Error ("Nicht -IO -Ausnahme: Datei von FAST DFS fehlgeschlagen", e); } return null;}Dateien löschen
public static void deleteFile (String GroupName, String RemoteFileName) löst eine Ausnahme aus {storageClient = new StorageClient (TrackerServer, StorageServer); int i = storageClient.delete_file (GroupName, RemoteFileName); logger.info ("Datei erfolgreich löschen !!!" + i);}Rufen Sie bei der Verwendung von FASTDFS einfach die entsprechende Methode von FastDFSClient auf.
4.. Upload -Kontrollklasse schreiben
Lesen Sie Dateiinformationen von MultiPartFile und laden Sie die Datei mit FastDFSClient in den FastDFS -Cluster hoch.
public String SaveFile (MultipartFile MultipartFile) löst IOException {String [] fileAbSolutepath = {} aus; String Dateiname = MultiPartFile.getOriginalFileName (); String ext = Dateiname.substring (Dateiname.lastIndexof (".") + 1); byte [] file_buff = null; InputStream InputStream = MultipartFile.getInputStream (); if (inputStream! = null) {int len1 = inputStream.available (); Datei_buff = new byte [len1]; inputStream.read (Datei_Buff); } inputStream.close (); Fastdfsfile file = new fastdfsfile (Dateiname, Datei_Buff, ext); try {fileAbSolutepath = fastdfsclient.Upload (Datei); // hochladen auf fastdfs} catch (Ausnahme E) {logger.Error ("Dateiausnahme hochladen!", E); } if (fileabSolutepath == null) {logger.Error ("Datei hochladen, bitte noch einmal hochladen!"); } String path = fastdfsclient.getTrackerUrl ()+fileAbSolutepath [0]+"/"+fileabSolutepath [1]; Rückweg;}Rufen Sie die obige Methode SaveFile () an.
@Postmapping ("/upload") // Neue Annotation seit 4.3Public String SingleFileUpload (@RequestParam ("Datei") MultiPartFile -Datei, recirectattributes recirectTributes) {if (Datei.isempe ()) {redirectTributes.addflashattribute ("message", uploddflash) ("message", uploddflashattribute ("message", "message", "message", "messy", "messy", "messy", "messy", "messy", "messy", "messy", "messy", "messy", "messy", "messy", "message", uplodFlash); return "Redirect: UploadStatus"; } try {// die Datei abrufen und an einem an einem Ort speichern String path = SaveFile (Datei); redirectAttributes.addflashAttribute ("meldung", "Sie haben erfolgreich '" + file.getOriginalFileName () + "'") erfolgreich hochgeladen; redirectAttributes.addflashAttribute ("Pfad", "Dateipfad url" + Pfad + "'"); } catch (Ausnahme e) {logger.Error ("Datei hochladen fehlgeschlagen", e); } return "recirect:/uploadStatus";}Nach erfolgreichem Upload zeigen Sie den Dateipfad zur Seite an, und die Renderings sind wie folgt:
Besuchen Sie diese URL in Ihrem Browser und Sie können sehen, dass sie erfolgreich über FastDFS angezeigt wird:
Dies geschieht mit Spring Boot, um FastDFs zu integrieren.
Beispielcode - GitHub
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.