- 查看结果
M00/00/00/rBOAlmH2mmqANl6tAAAADi991u4762.txt
cd /home/fastdfs/storage/files/data/00/00/
有big的表示备份的意思,-m表示文件的属性文件通常会记录文件的扩展名大小等基本信息。
- 通过浏览器访问
下载文件
- 通过download命令指定组名文件位置进行下载
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBOAlmH2mmqANl6tAAAAD
删除文件
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBOAlmH2mmqANl6tAAAADi991u4762.txt
删除成功后我们进入storage/files/data目录进行查看发现除了备份文件与属性文件外源文件已经被成功删除了
FastDFS-扩展模块执行流程
扩展模块解析了请求的文件路径以后,到指定的Tracker获取组名为group1的这个机器所在IP以及端口。
扩展模块获取了stroage所在IP以及端口后,就会自动使用Fastdfs的命令到指定的机器中获取文件流。
常用命令
- 启动FastDFS(每个人的路径可能不一样,找到自己的安装路径)
启动tracker:fdfs_trackerd /etc/fdfs/tracker.conf
启动storage: fdfs_storaged /etc/fdfs/storage.conf
- 关闭FastDFS
关闭tracker:/usr/local/bin/stop.sh fdfs_tracker
关闭storage: /usr/local/bin/stop.sh fdfs_storage
- 重启FastDFS
重启tracker: /usr/local/bin/restart.sh fdfs_trackered
重启storage: /usr/local/bin/restart.sh fdfs_storaged
- 查看集群情况 (%FastDFS%为自己的安装路径)
在任意一台storage(tracker也可以):/usr/local/bin/fdfs_monitor %FastDFS%/storage.conf
- 删除一个storage (%FastDFS%为自己的安装路径)
在任意一台storage(tracker也可以):/usr/local/bin/fdfs_monitor %FastDFS%/storage.conf delete group2 20.12.1.73
- 上传文件
fdfs_upload_file
- 下载文件
fdfs_download_file
- 查看文件信息
fdfs_file_info
- 删除文件
fdfs_delete_file
- 追加文件内容
fdfs_upload_appender
或 fdfs_append_file
- 监控服务器状态命令
fdfs_monitor
Java操作FastDFS
因为Maven依赖库中没有添加FastDFS相关依赖我们想要在java项目中引入FastDFS就需要在本地进行手动配置
准备工作
- 下载源码包并解压
地址:https://gitcode.net/mirrors/happyfish100/fastdfs-client-java?utm_source=csdn_github_accelerator
- 采用maven命令编译成jar安装到本地maven库
通过cmd打开黑窗口(注意文件夹位置)
通过下方清空并安装命令它会进行自动打包(需要配置maven环境变量)
mvn clean install
- 通过idea工具创建普通的maven工程
- 添加依赖
<dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.29-SNAPSHOT</version> </dependency>
在resources目录下准备一个fastdfs.conf文件并编写相关配置
- 创建工具类测试上传,下载,删除等一系列操作
上传文件
- 编写代码
/** * 文件上传 */ public static void upload(){ try { //读取fastDFS的配置文件用于将所有的tracker的地址读取到内存中 ClientGlobal.init("fastdfs.conf"); System.out.println("初始化信息:"+ClientGlobal.configInfo()); // 链接FastDFS服务器,创建tracker和Stroage TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getTrackerServer(); StorageServer storageServer=trackerClient.getStoreStorage(trackerServer); //定义Stroage客户端对象,需要使用这个对象来完成具体的文件上传,下载和删除操作 StorageClient storageClient=new StorageClient(trackerServer,storageServer); /** * 文件上传 * 参数1:需要上传的文件的绝对路径 * 参数2:需要上传的文件的扩展名 * 参数3:文件的属性文件(通常不用上传) * 返回一个String数组,这个数据对我们非常重要必须妥善保管(建议存入数据库) * 数组中的一个元素为文件所在的组名 * 数组中的第二个元素为文件所在远程路径名 */ String[] result= storageClient.upload_file("C:/Users/mzc/Desktop/剪辑素材/测试图片.jpg","jpg",null); for (String str:result){ System.out.println(str); } } catch (Exception e) { e.printStackTrace(); } }
- 运行
3. 测试(运行成功后会得到组名和路径名,通过ip地址/组名/远程路径名
进行访问)
下载文件
- 编写下载文件代码
/** * 下载文件 */ public static void download(){ try { //读取fastDFS的配置文件用于将所有的tracker的地址读取到内存中 ClientGlobal.init("fastdfs.conf"); System.out.println("初始化信息:"+ClientGlobal.configInfo()); // 链接FastDFS服务器,创建tracker和Stroage TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getTrackerServer(); StorageServer storageServer=trackerClient.getStoreStorage(trackerServer); //定义Stroage客户端对象,需要使用这个对象来完成具体的文件上传,下载和删除操作 StorageClient storageClient=new StorageClient(trackerServer,storageServer); /** * 文件下载 * 参数1:需要下载的文件的组名 * 参数2:需要下载文件的远程文件名 * 参数3:需要保存的本地文件名 * 返回一个int类型的数据,返回0表示文件下载成功,其他值表示文件下载失败 */ String groupName="group1"; String remoteFileName="M00/00/00/rBOAlmIN4bCAKz-VAADA9OtiDMc665.jpg"; String localFileName="E:/aa.jpg"; int result= storageClient.download_file(groupName,remoteFileName,localFileName); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } }
- 运行程序
- 测试
删除文件
- 编写代码
/** * 删除文件 */ public static void delete(){ try { //读取fastDFS的配置文件用于将所有的tracker的地址读取到内存中 ClientGlobal.init("fastdfs.conf"); System.out.println("初始化信息:"+ClientGlobal.configInfo()); // 链接FastDFS服务器,创建tracker和Stroage TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getTrackerServer(); StorageServer storageServer=trackerClient.getStoreStorage(trackerServer); //定义Stroage客户端对象,需要使用这个对象来完成具体的文件上传,下载和删除操作 StorageClient storageClient=new StorageClient(trackerServer,storageServer); /** * 文件删除 * 参数1:需要下载的文件的组名 * 参数2:需要下载文件的远程文件名 * 返回一个int类型的数据,返回0表示文件删除成功,其他值表示文件删除失败 */ String groupName="group1"; String remoteFileName="M00/00/00/rBOAlmIN4bCAKz-VAADA9OtiDMc665.jpg"; int result= storageClient.delete_file(groupName,remoteFileName); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } }
- 运行程序
- 测试