• 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:

     

     详细代码:

     

    1. //上传文件的方法
    2. public static void fileUpload(){
    3. TrackerServer trackerServer = null;
    4. StorageServer storageServer = null;
    5. try {
    6. //1.加载配置文件,默认去classpath下加载
    7. ClientGlobal.init("fdfs_client.conf");
    8. //2.创建TrackerClient对象
    9. TrackerClient trackerClient = new TrackerClient();
    10. //3.创建TrackerServer对象
    11. trackerServer = trackerClient.getConnection();
    12. //4.创建StorageServler对象
    13. storageServer = trackerClient.getStoreStorage(trackerServer);
    14. //5.创建StorageClient对象,这个对象完成对文件的操作
    15. StorageClient storageClient = new StorageClient(trackerServer,storageServer);
    16. //6.上传文件 第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
    17. String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
    18. for (String str:uploadArray) {
    19. System.out.println(str);
    20. }
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. } catch (MyException e) {
    24. e.printStackTrace();
    25. } finally {
    26. if(storageServer != null){
    27. try {
    28. storageServer.close();
    29. } catch (IOException e) {
    30. e.printStackTrace();
    31. }
    32. }
    33. if(trackerServer != null){
    34. try {
    35. trackerServer.close();
    36. } catch (IOException e) {
    37. e.printStackTrace();
    38. }
    39. }
    40. }
    41. }
    42. }

    这里修改上传文件的的参数

     

     

     需要开放端口:22122、23000

     启动运行:上传完成:

    可以通过返回的信息进行访问:

     

     

    可以把代码封装成工具类:

    抽取获取StorageClient的方法:

    1. public static StorageClient getStorageClient() throws IOException, MyException {
    2. //1.加载配置文件,默认去classpath下加载
    3. ClientGlobal.init("fdfs_client.conf");
    4. //2.创建TrackerClient对象
    5. TrackerClient trackerClient = new TrackerClient();
    6. //3.创建TrackerServer对象
    7. trackerServer = trackerClient.getConnection();
    8. //4.创建StorageServler对象
    9. storageServer = trackerClient.getStoreStorage(trackerServer);
    10. //5.创建StorageClient对象,这个对象完成对文件的操作
    11. StorageClient storageClient = new StorageClient(trackerServer,storageServer);
    12. return storageClient;
    13. }

    获取存储节点的客户端对象:StorageCllient对象

     

    改造文件上传的方法

    1. public static void fileUpload(){
    2.     try {
    3.         //1. 获取StorageClient对象
    4.         StorageClient storageClient = getStorageClient();
    5.         //2.上传文件  第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
    6.         String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
    7.         for (String str:uploadArray) {
    8.             System.out.println(str);
    9.         }
    10.     } catch (IOException e) {
    11.         e.printStackTrace();
    12.     } catch (MyException e) {
    13.         e.printStackTrace();
    14.     } finally {
    15.         closeFastDFS();
    16.     }
    17. }

     这个方法调用:这个是本地的上传方法,通过写本地的文件路径

    这里调用上传方法:

     

     

     还可以通过字节上传:这个写字节

     

     (4)SpringBoot集成FastDFS-文件下载方法封装

    下载文件的方法

    1. //下载文件的方法
    2. public static void fileDownload(){
    3.     try {
    4.         //1. 获取StorageClient对象
    5.         StorageClient storageClient = getStorageClient();
    6.         //2.下载文件 返回0表示成功,其它均表示失败
    7.         int num = storageClient.download_file("group1",
    8.                 "M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt","E:/bb.txt");
    9.         System.out.println(num);
    10.     } catch (IOException e) {
    11.         e.printStackTrace();
    12.     } catch (MyException e) {
    13.         e.printStackTrace();
    14.     } finally {
    15.         closeFastDFS();
    16.     }
    17. }

     

     

     

     

     固定路径

     

     

    指定路径 

     

     

     

     

     

     可以封装下载数组的方法:

     (5)SpringBoot集成FastDFS-文件删除方法封装

     

    删除文件的方法

    1. //删除文件的方法
    2. public static void fileDelete(){
    3.     try {
    4.         //1. 获取StorageClient对象
    5.         StorageClient storageClient = getStorageClient();
    6.         //2.删除文件 返回0表示成功,其它均表示失败
    7.         int num = storageClient.delete_file("group1",
    8.                 "M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt");
    9.         System.out.println(num);
    10.     } catch (IOException e) {
    11.         e.printStackTrace();
    12.     } catch (MyException e) {
    13.         e.printStackTrace();
    14.     } finally {
    15.         closeFastDFS();
    16.     }
    17. }

     执行:

     

     删除之后就不能访问了:

     

     (6)SpringBoot-文件上传到FastDFS服务器

    导入依赖:

     

     修改配置文件:

     

    创建index.html:

     

    创建controller:UploadController:

     

     

     

       

     选择一个文件:

    点击上传:

     

     

     

     

     

     

     

     

  • 相关阅读:
    【webrtc】Migrating your native/mobile application to Unified Plan/WebRTC 1.0 API.
    NLP_情感分类_数据清洗
    Speedoffice(Excel)中如何添加页眉页脚
    ES6 入门教程 10 对象的扩展 10.4 属性的可枚举性和遍历 & 10.5 super 关键字
    5.6 标准I/O(格式化输入输出)
    学习了解Angular 2 架构
    nvm、node、npm解决问题过程记录
    CentOS 7 中安装Kafka
    android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析
    客户服务质量提升的三种思路
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/127828369