<!-- fastdfs start --> <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.25</version> </dependency> <!-- fastdfs end -->
<!-- fdfs文件系统相关配置 fdfs_client.conf--> <connect_timeout>2</connect_timeout> <network_timeout>30</network_timeout> <charset>UTF-8</charset> <tracker_server>172.23.27.120:22122</tracker_server> <http.anti_steal_token>no</http.anti_steal_token> <http.secret_key></http.secret_key> <http.tracker_http_port>8085</http.tracker_http_port> <!-- fdfs文件系统相关配置 -->
package com.curiousby.cn.util; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.web.multipart.MultipartFile; /** * * @author baoyou E-mail:curiousby@163.com * @version 2017年3月28日 下午3:09:56 * desc: */ public class FDFSFile { private String fileName; private String fileExt; private String fileSize; private byte[] content; public FDFSFile() { } public FDFSFile(String fileName, String fileExt, String fileSize, byte[] content) { this.fileName = fileName; this.fileExt = fileExt; this.fileSize = fileSize; this.content = content; } public FDFSFile(File file) { this.fileName = file.getName(); this.fileExt = FilenameUtils.getExtension(file.getName()); this.fileSize = String.valueOf(FileUtils.sizeOf(file)); try { this.content = FileUtils.readFileToByteArray(file); } catch (IOException e) { e.printStackTrace(); } } public FDFSFile(MultipartFile file) { this.fileName = file.getOriginalFilename(); this.fileExt = FilenameUtils.getExtension(file.getOriginalFilename()); this.fileSize = String.valueOf(file.getSize()); try { this.content = file.getBytes(); } catch (IOException e) { e.printStackTrace(); } } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getFileExt() { return fileExt; } public void setFileExt(String fileExt) { this.fileExt = fileExt; } public String getFileSize() { return fileSize; } public void setFileSize(String fileSize) { this.fileSize = fileSize; } public byte[] getContent() { return content; } public void setContent(byte[] content) { this.content = content; } }
package com.curiousby.cn.util; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.StorageClient1; import org.csource.fastdfs.StorageServer; import org.csource.fastdfs.TrackerClient; import org.csource.fastdfs.TrackerServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.web.multipart.MultipartFile; /** * * @author baoyou E-mail:curiousby@163.com * @version 2017年3月28日 下午3:09:51 * desc: */ public class FDFSUtil { private static Logger logger = LoggerFactory.getLogger(FDFSUtil.class); public static final String CLIENT_CONFIG_FILE = "fdfs_client.conf"; private static TrackerClient trackerClient; private static TrackerServer trackerServer; private static StorageServer storageServer; private static StorageClient1 storageClient; static { try { ClassPathResource cpr = new ClassPathResource(CLIENT_CONFIG_FILE); String fdfsConf = cpr.getFile().getAbsolutePath(); logger.info("----fdfsConf----" + fdfsConf); // 初始化fdfs全局配置 ClientGlobal.init(fdfsConf); trackerClient = new TrackerClient(); trackerServer = trackerClient.getConnection(); storageClient = new StorageClient1(trackerServer, storageServer); } catch (Exception e) { logger.error("FDFSUtil init------------", e); } } /** * * @param args */ public static void main(String[] args) { // 上传 File file = new File("C:\\Users\\cmcc-B100036\\Desktop\\截图\\fastdfs install monitor.png"); FDFSFile fdfsFile = new FDFSFile(file); String fileId = FDFSUtil.upload(fdfsFile); System.out.println(fdfsFile.getFileName()); System.out.println(fdfsFile.getFileExt()); System.out.println(fdfsFile.getFileSize()); // 下载 try { byte[] b = FDFSUtil.download(fileId); IOUtils.write(b, new FileOutputStream("C:\\Users\\cmcc-B100036\\Desktop\\aaa.png")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 删除 // int result = FDFSUtil.delete(fileId); } /** * @param file * @return */ public synchronized static String upload(FDFSFile file) { logger.info("File Name: {}; File Length: {}", file.getFileName(), file.getFileSize()); // 存储文件信息 NameValuePair[] metaList = new NameValuePair[3]; metaList[0] = new NameValuePair("fileName", file.getFileName()); metaList[1] = new NameValuePair("fileExt", file.getFileExt()); metaList[2] = new NameValuePair("fileSize", file.getFileSize()); long startTime = System.currentTimeMillis(); String uploadResult = null; try { uploadResult = storageClient.upload_file1(file.getContent(), file.getFileExt(), metaList); } catch (IOException e) { logger.error("IO Exception when uploadind the file: " + file.getFileName(), e); } catch (Exception e) { logger.error("Non IO Exception when uploadind the file: " + file.getFileName(), e); } logger.info("upload_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (uploadResult == null) { logger.error("upload file fail, error code: " + storageClient.getErrorCode()); } logger.info("upload file successfully!!! " + "uploadResult: " + uploadResult); return uploadResult; } /** * @param mFiles * @return */ public static String upload(MultipartFile[] mFiles) { logger.info("upload MultipartFile[]: {}", mFiles.length); if (ArrayUtils.isEmpty(mFiles)) { return ""; } FDFSFile[] files = new FDFSFile[mFiles.length]; for (int i = 0; i < mFiles.length; i++) { files[i] = new FDFSFile(mFiles[i]); } return upload(files); } /** * @param files * @return */ public static String upload(FDFSFile[] files) { logger.info("upload FDFSFile[]: {}", files.length); String result = ""; for (FDFSFile fdfsFile : files) { result += upload(fdfsFile) + ","; } if (StringUtils.isNotEmpty(result)) { result = result.substring(0, result.length() - 1); } logger.info("upload FDFSFile[] result: {}", result); return result; } /** * 获取文件属性信息 * * @param fileId * 文件标识 * @return FDFSFile:文件名,后缀名,大小 */ public static FDFSFile getFileMeta(String fileId) { logger.info("fileId--" + fileId); FDFSFile fdfsFile = new FDFSFile(); try { NameValuePair[] nvps = storageClient.get_metadata1(fileId); if (nvps != null) { fdfsFile.setFileExt(nvps[0].getValue()); fdfsFile.setFileName(nvps[1].getValue()); fdfsFile.setFileSize(nvps[2].getValue()); } } catch (Exception e) { e.printStackTrace(); } logger.info("getFileMeta info success!"); return fdfsFile; } /** * 获取文件属性信息 * * @param fileIds * 多个文件标识,以,分隔 * @return FDFSFile[]:文件名,后缀名,大小 */ public static FDFSFile[] getFileMetas(String fileIds) { logger.info("fileIds--" + fileIds); if (StringUtils.isEmpty(fileIds)) { return null; } String[] fileId = fileIds.split(","); FDFSFile[] fdfsFiles = new FDFSFile[fileId.length]; for (int i = 0; i < fileId.length; i++) { fdfsFiles[i] = getFileMeta(fileId[i]); } return fdfsFiles; } /** * 下载文件 * * @param fileId * 文件标识 * @return byte[]文件内容 */ public static byte[] download(String fileId) { logger.info("fileId--" + fileId); byte[] b = null; try { b = storageClient.download_file1(fileId); } catch (Exception e) { e.printStackTrace(); } logger.info("download file successfully!!! " + System.currentTimeMillis()); return b; } /** * 删除文件 * * @param fileId * @return 0:成功 */ public static int delete(String fileId) { logger.info("fileId--" + fileId); int i = 1; try { i = storageClient.delete_file1(fileId); logger.info(i == 0 ? "删除成功" : "删除失败:" + i); } catch (Exception e) { e.printStackTrace(); } return i; } /** * 递归删除目录下的所有文件及子目录下所有文件 * @param dir 将要删除的文件目录 * @return boolean Returns "true" if all deletions were successful. * If a deletion fails, the method stops attempting to * delete and returns "false". */ public static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); if (children != null) { //递归删除目录中的子目录下 for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } } // 目录此时为空,可以删除 return dir.delete(); } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信捐助,加入it技术扣扣群),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
FastDFS java client SDK FastDFS Java Client API may be copied only under the terms of the BSD license. 使用ant从源码构建 ant clean package 使用maven从源码安装 mvn clean install 使用maven从jar文件安装...
2. **初始化FastDFS客户端**:使用FastDFS Java客户端提供的API进行初始化,这个过程中可能涉及到连接池的设置,以便更好地管理与FastDFS服务器的连接。 3. **集成线程池**:创建一个自定义的线程池,例如使用`...
【Java使用FastDFS】 在Java中使用FastDFS,首先需要在项目中引入FastDFS的Java客户端库。配置client.conf文件,设置tracker服务器的地址和其他相关参数。接着创建FastdfsClient和FastdfsUtil类,前者用于与FastDFS...
而FastDFS的Java客户端则是Java开发者在使用FastDFS时的重要工具,本文将详细介绍FastDFS Java客户端的使用方法和核心知识点。 一、FastDFS Java客户端概述 FastDFS Java客户端是Java语言实现的对FastDFS服务端的...
本示例代码将帮助开发者理解如何使用Java与FastDFS进行交互。 在Java中,我们通常会使用FastDFS的Java客户端来实现文件的上传和下载。首先,你需要在项目中引入FastDFS的Java客户端库。这可以通过Maven或Gradle的...
《深入解析FastDFS Java源码》 FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要用于解决大容量存储和负载均衡的问题。...同时,结合Maven仓库的使用,可以快速地将FastDFS整合到Java项目中,提升开发效率。
在实际使用中,Apache的HttpClient或OkHttp等HTTP客户端库可以用于将前端提交的文件流直接传递给后端的FastDFS上传逻辑,避免了临时文件的创建和存储。 总的来说,通过Java与FastDFS的集成,我们可以构建一个高效、...
通过以上步骤,你已经在Linux环境中成功安装并配置了FastDFS,同时了解了如何使用Java客户端进行文件上传。在实际生产环境中,你可能还需要考虑负载均衡、容灾备份、监控告警等高级功能,以确保系统的稳定性和高可用...
它提供了易于使用的API,使得Java程序员可以方便地在项目中集成FastDFS服务。 2. **fastdfs-client-java-1.27-SNAPSHOT.pom**:这是Maven项目的依赖配置文件,包含了该库的依赖关系和版本信息。如果项目使用Maven...
【FastDFS-Client-Java-...如果你正在使用Java开发涉及大量文件操作的应用,FastDFS-Client-Java-Master是一个值得考虑的解决方案。在实际使用过程中,应结合具体业务需求,合理配置和优化,以实现最佳性能和稳定性。
FastDFS服务器是一个轻量级的文件存储服务,结合Nginx使用,实现集群高可用,但是他的java客户端不是特别好找。本java客户端依赖包,能够完美整合实现FastDFS服务器的连接,上传、下载和删除。 内部附有简单API使用...
现在,你已经了解了如何使用Java操作FastDFS来上传文件,并将其封装为一个工具类。这个过程涉及到网络通信、文件读取、配置管理等多个方面,是Java开发者必备的技能之一。在实际开发中,结合具体业务需求,你还可以...
**FastDFS概述** ...以上是关于"整合java实例 FastDFS"的主要内容,通过理解FastDFS的基本原理和Java客户端的使用方法,开发者可以有效地将FastDFS集成到Java项目中,实现高效、稳定的文件存储和访问功能。
在Java环境中,我们通常使用FastDFS的Java客户端来实现与FastDFS服务器的交互。这个客户端提供了丰富的API,包括文件的上传、下载、删除、获取文件信息等操作。首先,我们需要在项目中引入FastDFS的Java客户端依赖库...
使用`fastdfs-client-java`时,首先需要在项目中引入`fastdfs-client-java-1.29-SNAPSHOT.jar`和`commons-io-2.4.jar`这两个依赖库,然后根据`fdfs_client.conf`配置客户端,并通过`FastDFSClient`类提供的API进行...
Java客户端在使用FastDFS时,首先需要连接到跟踪服务器,获取到文件应该存储或访问的存储服务器信息。这个过程通常包括以下步骤: 1. **连接跟踪服务器**:客户端通过Java客户端库建立与跟踪服务器的连接。 2. **...
《FastDFS客户端Java库1.27版...总之,FastDFS客户端Java库1.27版为Java开发者提供了一个便捷、高效的与FastDFS服务器交互的工具,结合源码阅读,开发者可以更深入地理解和定制化使用,以满足多样化的文件存储需求。
总的来说,FastDFS客户端Java版是Java开发者与FastDFS服务交互的重要工具,它的使用涉及到项目构建配置、网络通信以及文件操作等多个方面。在开发过程中,理解并正确配置这个客户端是确保项目能够正常运行的关键。
Java作为服务器端开发的主流语言,与FastDFS的结合使用能实现高效的数据存储和访问。 首先,理解FastDFS的工作原理是至关重要的。它主要由两部分组成:跟踪服务器(Tracker Server)和存储服务器(Storage Server)...