Dans cet article, nous décrivons comment utiliser Spring Boot pour télécharger des fichiers dans le système de fichiers distribué FastDFS.
Ce projet sera construit sur la base du projet précédent.
1. Configuration du pack POM
Nous utilisons la dernière version 1.5.9 de Spring Boot, JDK utilise 1.8, TOMCAT8.0.
<dependency> <proupId> org.csource </rom grouped> <ArtefactId> FastDFS-Client-Java </ Artifactid> <DERNÉRATION> 1.27-SNAPSHOT </ Version> </Dependency>
Ajout du package FastDFS-Client-Java pour appeler les API liées à FastDFS.
2. Fichier de configuration
Ajouter un fichier fdfs_client.conf dans le répertoire des ressources
connect_timeout = 60Network_timeout = 60Charset = utf-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = 123456Tracker_server = 192.168.53.85:2221222122122122121222222221212212121221212212122121212121221221221221221221221221221221212212122121212212122121212121212121212121212121212121212121212121212121212121212121212121212121212121216.
Le fichier de configuration définit l'heure de délai de connexion, le format de codage, l'adresse tracker_server et d'autres informations.
Référence pour plus de détails: FastDFS-Client-Java
3. Encapsuler la classe d'outils de téléchargement FastDFS
Encapsuler fastdfsfile et les informations de base de fichiers incluent le nom de fichier, le contenu, le type de fichier, l'auteur, etc.
classe publique FastDFSFile {nom de chaîne privée; contenu octet privé []; chaîne privée ext; chaîne privée MD5; auteur de chaîne privée; // omettre Getter et SetterEncapsulez la classe FastDFSClient, y compris des méthodes couramment utilisées telles que le téléchargement, le téléchargement et la suppression.
Tout d'abord, lisez les informations de configuration correspondantes lorsque la classe est chargée et l'initialisez-les.
statique {try {string filepath = new classPathResource ("fdfs_client.conf"). getFile (). getAbsolutepath () ;; ClientGlobal.init (filepath); trackerClient = new trackerClient (); trackerserver = trackerClient.getConnection (); StorageServer = trackerClient.GetStoreStorage (trackerserver); } catch (exception e) {logger.error ("FastDfs client init fail!", e); }}Téléchargement de fichiers
Public Static String [] upload (FastDFSFIle File) {Logger.info ("Nom de fichier:" + file.getName () + "Longueur du fichier:" + file.getContent (). Length); NameValuepair [] meta_list = new nameValuepair [1]; meta_list [0] = new nameValuepair ("auteur", file.getAuthor ()); Long startTime = System.CurrentTimemillis (); String [] uploadResults = null; essayez {StorageClient = new StorageClient (trackerserver, StorageServer); uploadResults = StorageClient.upload_file (file.getContent (), file.getExt (), meta_list); } catch (ioException e) {Logger.Error ("IO Exception lorsque vous téléchargez le fichier:" + file.getName (), e); } catch (exception e) {Logger.Error ("Exception non io Lorsque vous téléchargez le fichier:" + file.getName (), e); } logger.info ("Temps upload_file utilisé:" + (System.currenttimemillis () - starttime) + "ms"); if (uploadResults == null) {logger.error ("télécharger un échec du fichier, code d'erreur:" + storageclient.getErrorcode ()); } String GroupName = uploadResults [0]; String RemoteFileName = uploadResults [1]; Logger.info ("Télécharger le fichier Succès !!! renvoyer des sur-téléchargements;}Utilisez le client StorageClient fourni par FastDFS pour télécharger des fichiers et enfin renvoyer le résultat de téléchargement.
Obtenez des informations sur le fichier basées sur le nom de groupe et le nom du fichier.
public static fileInfo getFile (String GroupName, String RemoteFileName) {try {StorAgeClient = new StorAgeClient (trackerserver, StorageServer); return storageclient.get_file_info (groupe de g groupement, émoustofileName); } catch (ioException e) {logger.error ("IO Exception: Obtenez un fichier de Fast DFS a échoué", e); } catch (exception e) {Logger.Error ("Exception non io: obtenir un fichier de Fast DFS échoué", e); } retourner null;}Télécharger le fichier
public static inputStream downfile (String GroupName, String RemoteFileName) {try {StorAgeClient = new StorAgeClient (trackerserver, StorageServer); byte [] filebyte = storageclient.download_file (groupName, roteFileName); InputStream ins = new bytearrayInputStream (filebyte); return ins; } catch (ioException e) {logger.error ("IO Exception: Obtenez un fichier de Fast DFS a échoué", e); } catch (exception e) {Logger.Error ("Exception non io: obtenir un fichier de Fast DFS échoué", e); } retourner null;}Supprimer les fichiers
public static void DeleteFile (String GroupName, String RemoteFileName) lève une exception {StorAgeClient = new StorAgeClient (trackerserver, StorageServer); int i = storageclient.delete_file (groupName, RemoteFileName); logger.info ("supprimer le fichier avec succès !!!" + i);}Lorsque vous utilisez FastDFS, appelez simplement la méthode correspondante de FastDFSClient.
4. Classe de contrôle de téléchargement d'écriture
Lisez les informations du fichier à partir de multipartfile et téléchargez le fichier dans le cluster FastDFS à l'aide de FastDFSClient.
public String SaveFile (multipartFile MultipartFile) lève 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 = new byte [Len1]; inputStream.read (file_buff); } inputStream.close (); FastDFSFILE File = new FastDFSFILE (FileName, File_Buff, EXT); try {fileBsolutepath = fastdfsclient.upload (file); // Téléchargez sur FastDFS} catch (exception e) {logger.error ("Télécharger Fichier Exception!", E); } if (fileAbSolutepath == null) {logger.error ("Fichier de téléchargement a échoué, veuillez télécharger à nouveau!"); } String Path = FastDfsClient.getTrackerUrl () + FileAbSolutepath [0] + "/" + FileAbSolutepath [1]; chemin de retour;}Contrôle de demande, appelez la méthode ci-dessus SaveFile ().
@Postmapping ("/ upload") // nouvelle annotation depuis 4.3Public String singleFileUpload (@RequestParam ("File") Fichier multipartFile, redirectAttributes redirectAttributes) {if (file.isempty ()) {redirectAttribute "); retourner "Redirection: uploadStatus"; } essayez {// Obtenez le fichier et enregistrez-le quelque part String Path = SaveFile (fichier); redirectattributes.addflashAttribute ("message", "Vous avez téléchargé avec succès '" + file.getoriginalFileName () + "'"); redirectattributes.addflashAttribute ("path", "URL de chemin de fichier '" + path + "'"); } catch (exception e) {Logger.Error ("Télécharger le fichier a échoué", e); } return "redirect: / uploadstatus";}Une fois le téléchargement réussi, affichez le chemin du fichier vers la page et les rendus sont les suivants:
Visitez cette URL dans votre navigateur et vous pouvez voir qu'il est affiché avec succès via FastDFS:
Cela se fait à l'aide de Spring Boot pour intégrer FastDFS.
Exemple de code - github
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.