FastDFS学习(二)


目录:

(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

  • --prefix是指定nginx安装路径
    • --add-module指定fastDFS的nginx模块的源代码路径

执行: 上面命令

 

 依次执行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:

 

 

 

   

 选择一个文件:

点击上传:

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值