行业知识
Springboot整合fastdfs-分布式文件存储
2026-11-07 04:15:43
来源:互联网转载
一、快速开始
1、添加依赖
com.luhuiguo fastdfs-spring-boot-starter 0.2.0 org.csource fastdfs-client-java 1.27-SNAPSHOTorg.springframework.bootspring-boot-configuration-processortrue
2、添加配置项
# fdfs配置fdfs: connect-timeout: 2000 # 连接服务器超时时间 so-timeout: 3000 tracker-list: ${ip}:${port} http: path: http://${ip}:${port}/ #http链接前缀 3、新建 fdfs_client.conf(可忽略)
connect_timeout = 60network_timeout = 60charset = UTF-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = 123456tracker_server = 192.168.53.85:22122
2、FastDFS客户端工具
@Slf4jpublic class FastDFSClient {//分片客户端 private static TrackerClient trackerClient; //分片服务端private static TrackerServer trackerServer; //存储桶客户端private static StorageClient storageClient; //存储桶服务端private static StorageServer storageServer;static {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);}} //文件上传 @SneakyThrowspublic static String[] upload(FastDFSFile file) {NameValuePair[] meta_list = new NameValuePair[1];meta_list[0] = new NameValuePair("author", file.getAuthor());long startTime = System.currentTimeMillis();String[] uploadResults = null;storageClient = new StorageClient(trackerServer, storageServer); uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list); if(null == uploadResults) return null;String groupName = uploadResults[0];String remoteFileName = uploadResults[1];return uploadResults;} //获取File @SneakyThrowspublic static FileInfo getFile(String groupName, String remoteFileName) {storageClient = new StorageClient(trackerServer, storageServer); return storageClient.get_file_info(groupName, remoteFileName);} //下载文件 @SneakyThrowspublic static InputStream downFile(String groupName, String remoteFileName) {storageClient = new StorageClient(trackerServer, storageServer); byte[] fileByte = storageClient.download_file(groupName, remoteFileName); InputStream ins = new ByteArrayInputStream(fileByte); return ins;} //删除文件 @SneakyThrowspublic static void deleteFile(String groupName, String remoteFileName) {storageClient = new StorageClient(trackerServer, storageServer);int i = storageClient.delete_file(groupName, remoteFileName);logger.info("delete file successfully!!!" + i);} //获取存储器 @SneakyThrowspublic static StorageServer[] getStoreStorages(String groupName){return trackerClient.getStoreStorages(trackerServer, groupName);} //获取FetchStorages @SneakyThrowspublic static ServerInfo[] getFetchStorages(String groupName,String remoteFileName) {return trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName);} // 获取存储器的URL @SneakyThrowspublic static String getTrackerUrl() {return "http://"+trackerServer.getInetSocketAddress().getHostString()+":" +ClientGlobal.getG_tracker_http_port()+"/";} @Data public static class FastDFSFile { //文件名 private String name; //文件内容 private byte[] content; //文件拓展名 private String ext; //文件的md5 private String md5; //文件做着 private String author; }} ()()
上一篇:帝国cms怎么关闭广告?
下一篇:戴尔塔式服务器怎么样?