En este artículo, describimos cómo usar el arranque de Spring para cargar archivos al sistema de archivos distribuido FastDFS.
Este proyecto se construirá sobre la base del proyecto anterior.
1. Configuración del paquete POM
Utilizamos la última versión 1.5.9 de Spring Boot, JDK usa 1.8, Tomcat8.0.
<Spendency> <MoupRoMID> org.csource </groupId> <artifactId> fastdfs-client-java </artifactid> <versión> 1.27-snapshot </versión> </pendency>
Se agregó el paquete FastDFS-Client-Java para llamar a API relacionadas con FastDFS.
2. Archivo de configuración
Agregue el archivo fdfs_client.conf en el directorio de recursos
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:212121212121212121221212212212212212212212
El archivo de configuración establece el tiempo de tiempo de espera de conexión, el formato de codificación, la dirección Tracker_Server y otra información.
Referencia para más detalles: FastDFS-Client-Java
3. Encapsula la clase de herramienta de carga FastDFS
Encapsular FastDFSFile, y la información básica del archivo incluye el nombre del archivo, el contenido, el tipo de archivo, el autor, etc.
clase pública fastdfsfile {nombre de cadena privada; Contenido de byte privado []; cadena privada ext; cadena privada MD5; autor de cadena privada; // omitir getter y setterEncapsule la clase FastDFSClient, incluidos los métodos de uso común, como la carga, la descarga y la eliminación.
Primero, lea la información de configuración correspondiente cuando la clase se carga y la inicializa.
static {try {string filePath = new classpathResource ("fdfs_client.conf"). getFile (). getAbSolutePath () ;; ClientGlobal.init (FilePath); rastreRClient = new TrackIrClient (); TrackerServer = TrackReglient.getConnection (); storageServer = TrackIrclient.getStorStorage (TrackerServer); } catch (Exception e) {logger.error ("Faildfs Client Init Fail!", E); }}Carga de archivo
public static string [] upload (archivo fastdfsfile) {logger.info ("nombre del archivo:" + file.getName () + "longitud del archivo:" + file.getContent (). longitud); NameValuePair [] meta_list = new NameValuePair [1]; meta_list [0] = new NameValuePair ("autor", file.getAuthor ()); Long Starttime = System.CurrentTimemillis (); String [] uploadResults = null; Pruebe {storageClient = new StorageClient (TrackerServer, StorageServer); uploadResults = storageClient.upload_file (file.getContent (), file.getext (), meta_list); } catch (ioException e) {logger.error ("IO Exception cuando cargue el archivo:" + file.getName (), e); } Catch (Exception e) {logger.error ("no IO excepción cuando cargue el archivo:" + file.getName (), e); } logger.info ("upload_file tiempo usado:" + (system.currentTimemillis () - starttime) + "ms"); if (uploadResults == null) {logger.error ("Fail de archivo de carga, código de error:" + storageClient.getErrorCode ()); } String groupName = uploadResults [0]; String RemoteFileName = uploadResults [1]; logger.info ("¡Cargue el archivo correctamente!" + "Group_name:" + GroupName + ", remotoFileName:" + "" + RemoteFileName); return uploadResults;}Use el cliente StorageClient proporcionado por FastDFS para cargar archivos y finalmente devuelva el resultado de carga.
Obtenga información del archivo basada en el nombre de grupo y el nombre del archivo.
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 ("Excepción io: obtenga el archivo de Fast DFS Falling", e); } Catch (Exception e) {logger.error ("Excepción no IO: obtenga el archivo de Fast DFS Falling", e); } return null;}Descargar el archivo
public static InputStream Downfile (String GroupName, String RemoteFileName) {try {storageClient = new StorageClient (TrackerServer, Storageserver); byte [] fileByte = storageClient.download_file (groupname, remotoFileName); InputStream INS = new ByteArrayInputStream (fileByte); devolver ins; } Catch (ioException e) {logger.error ("Excepción io: obtenga el archivo de Fast DFS Falling", e); } Catch (Exception e) {logger.error ("Excepción no IO: obtenga el archivo de Fast DFS Falling", e); } return null;}Eliminar archivos
public static void DeleteFile (String GroupName, String RemoteFileName) lanza la excepción {storageClient = new StorageClient (TrackerServer, Storageserver); int i = storageClient.delete_file (groupname, remotoFileName); logger.info ("Eliminar el archivo con éxito !!!" + i);}Cuando use FastDFS, simplemente llame al método correspondiente de FastDFSClient.
4. Clase de control de carga de redacción
Lea la información del archivo desde MultipartFile y cargue el archivo en el clúster FastDFS usando FastDFSClient.
public String SaveFile (multipartfile multipartfile) lanza ioexception {string [] fileAbsolutePath = {}; Cadena filename = multipartFile.getOriginalFileName (); Cadena ext = FileName.Substring (FileName.lastIndexOf (".") + 1); byte [] file_buff = null; InputStream inputStream = multipartFile.getInputStream (); if (inputStream! = null) {int len1 = inputStream.available (); file_buff = nuevo byte [len1]; inputStream.read (file_buff); } inputStream.Close (); Archivo fastdfsfile = new FastDFSFile (nombre de archivo, file_buff, ext); intente {FileAbsolutePath = fastdfsclient.upload (archivo); // cargar a fastdfs} capt (excepción e) {logger.error ("¡Excepción del archivo de carga!", E); } if (fileAbsolutePath == null) {logger.error ("Cargar el archivo fallado, por favor, suba de nuevo!"); } String ruta = fastdfsclient.getTrackerUrl ()+FleAbsolutePath [0]+"/"+FileBaBsolutePath [1]; ruta de retorno;}Control de solicitud, llame al método anterior SaveFile ().
@PostMapping ("/upload") // nueva anotación desde 4.3Public String senceogupload (@RequestParam ("file") múltiple archivo, redirectAtTributes redirectAtTributes) {if (file.isEmpty () {redirectAtTributes.addFlashAttribe ("Mensaje", "Seleccione un archivo a UPLOAD"); return "redirect: cargarstatus"; } try {// Obtenga el archivo y guárdelo en algún lugar string rath = saveFile (archivo); redirectattributes.AddFlashAttribute ("Mensaje", "Usted cargó con éxito '" + file.getOriginalFileName () + "'"); redirectattributes.addFlashAttribute ("ruta", "PATH FILE URL '" + PATH + "'"); } catch (Exception e) {logger.error ("Fallado de archivo de carga", e); } return "redirect:/uploadStatus";}Después de que la carga sea exitosa, muestre la ruta del archivo a la página, y las representaciones son las siguientes:
Visite esta URL en su navegador y puede ver que se muestra con éxito a través de FastDFS:
Esto se realiza con el arranque de Spring para integrar FastDFS.
Código de muestra - Github
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.