小工具知识网

当前位置: 首页 > 行业知识 > Springboot整合fastdfs-分布式文件存储

行业知识

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怎么关闭广告?

下一篇:戴尔塔式服务器怎么样?