目录:
(1)FastDFS-其他命令的操作
(2)FastDFS-安装nginx扩展模块-提供Http访问
(3)SpringBoot集成FastDFS-文件上传方法封装
(4)SpringBoot集成FastDFS-文件下载方法封装
(5)SpringBoot集成FastDFS-文件删除方法封装
(6)SpringBoot-文件上传到FastDFS服务器
(1)FastDFS-其他命令的操作
首先上传一个文件:这个返回的结果信息很少,比上面的内容少很多,返回fileid:集群和远程文件地址

此时就不是2对文件了:只是一个

fdsf_file_info命令:返回上传文件的信息 
fdfs_download_file :下载文件,没有指定下载路径默认下载根目录
可以指定下载路径
fdfs_delete_file:删除文件


我们操作情况下,使用java操作的不是测试的命令:fdfs_test,操作的是正常的上传fdfs_upload_file等命令
(2)FastDFS-安装nginx扩展模块-提供Http访问
在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在浏览器中访问呢?
FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件
上面 上传的文件是不能直接访问的,需要使用Nginx的一个扩展插件。
上传fastdfs-nginx-module-master.zip
解压这个压缩包:
移动目录:


src里面有一些配置文件: mod-fastdfs.conf是扩展模块的配置文件
安装Nginx并且添加fastDFS模块
因为这个模块必须在Nginx的安装的过程中才能添加,所有我们需要重新安装一个nginx,为了和原来已安装的Nginx进行区分,我们把新安装的Nginx取名为nginx_fdfs
切换至解压后的Nginx主目录,执行配置操作
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx_fdfs --add-module=/home/soft/fastdfs-nginx-module-master/src

执行: 上面命令

依次执行make和make install命令
生成新安装的nginx_fdfs



执行命令:
将/home/soft/fastdfs-nginx-module-master/src(自己实际存放Nginx扩展模块的目录)目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx
cp /home/soft/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

执行:


创建文件夹:
修改mod_fastdfs.conf配置文件
base_path=/opt/fastdfs/nginx_mod
tracker_server=192.168.235.128:22122
url_have_group_name = true
store_path0=/opt/fastdfs/storage/files
编辑:
修改:


修改:

修改:访问的时候是否带集群名称

修改:具体文件存储路径


#拦截请求路径中包含 /group[1-9]/M0[0-9] 的请求,用 fastdfs的Nginx 模块进行转发
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
修改:
修改:

ngx_fastdfs_module; #这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager
进行启动:
关掉运行的nginx
重启或启动FastDFS服务进程
fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart

访问这张图片


上传一个json文件:

使用上传命令:
访问:
(3)SpringBoot集成FastDFS-文件上传方法封装
开启nginx,FastDFS

先创建一个空的工程:

创建Modul:


首先解压客户端:
使用命令把本地的工程安装 到本地仓库当中:使用这个命令之前需要自己的电脑配置了Maven的环境变量:


这样就可以引入FastDFS坐标依赖了:
把这个配置文件复制到项目中:


创建配置类:FastDFSConfig:
详细代码:

- //上传文件的方法
- public static void fileUpload(){
- TrackerServer trackerServer = null;
- StorageServer storageServer = null;
- try {
- //1.加载配置文件,默认去classpath下加载
- ClientGlobal.init("fdfs_client.conf");
- //2.创建TrackerClient对象
- TrackerClient trackerClient = new TrackerClient();
- //3.创建TrackerServer对象
- trackerServer = trackerClient.getConnection();
- //4.创建StorageServler对象
- storageServer = trackerClient.getStoreStorage(trackerServer);
- //5.创建StorageClient对象,这个对象完成对文件的操作
- StorageClient storageClient = new StorageClient(trackerServer,storageServer);
- //6.上传文件 第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
- String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
- for (String str:uploadArray) {
- System.out.println(str);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } catch (MyException e) {
- e.printStackTrace();
- } finally {
- if(storageServer != null){
- try {
- storageServer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(trackerServer != null){
- try {
- trackerServer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
这里修改上传文件的的参数
需要开放端口:22122、23000

启动运行:上传完成:

可以通过返回的信息进行访问:
可以把代码封装成工具类:
抽取获取StorageClient的方法:
- public static StorageClient getStorageClient() throws IOException, MyException {
- //1.加载配置文件,默认去classpath下加载
- ClientGlobal.init("fdfs_client.conf");
- //2.创建TrackerClient对象
- TrackerClient trackerClient = new TrackerClient();
- //3.创建TrackerServer对象
- trackerServer = trackerClient.getConnection();
- //4.创建StorageServler对象
- storageServer = trackerClient.getStoreStorage(trackerServer);
- //5.创建StorageClient对象,这个对象完成对文件的操作
- StorageClient storageClient = new StorageClient(trackerServer,storageServer);
- return storageClient;
- }
获取存储节点的客户端对象:StorageCllient对象




改造文件上传的方法
- public static void fileUpload(){
- try {
- //1. 获取StorageClient对象
- StorageClient storageClient = getStorageClient();
- //2.上传文件 第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
- String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
- for (String str:uploadArray) {
- System.out.println(str);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } catch (MyException e) {
- e.printStackTrace();
- } finally {
- closeFastDFS();
- }
- }
这个方法调用:这个是本地的上传方法,通过写本地的文件路径

这里调用上传方法:
还可以通过字节上传:这个写字节

(4)SpringBoot集成FastDFS-文件下载方法封装
下载文件的方法
- //下载文件的方法
- public static void fileDownload(){
- try {
- //1. 获取StorageClient对象
- StorageClient storageClient = getStorageClient();
- //2.下载文件 返回0表示成功,其它均表示失败
- int num = storageClient.download_file("group1",
- "M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt","E:/bb.txt");
- System.out.println(num);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (MyException e) {
- e.printStackTrace();
- } finally {
- closeFastDFS();
- }
- }

固定路径

指定路径

可以封装下载数组的方法:
(5)SpringBoot集成FastDFS-文件删除方法封装
删除文件的方法
- //删除文件的方法
- public static void fileDelete(){
- try {
- //1. 获取StorageClient对象
- StorageClient storageClient = getStorageClient();
- //2.删除文件 返回0表示成功,其它均表示失败
- int num = storageClient.delete_file("group1",
- "M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt");
- System.out.println(num);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (MyException e) {
- e.printStackTrace();
- } finally {
- closeFastDFS();
- }
- }

执行:
删除之后就不能访问了:

(6)SpringBoot-文件上传到FastDFS服务器
导入依赖:


修改配置文件:


创建index.html:

创建controller:UploadController:


选择一个文件:

点击上传:


