【Mac-Docker】FastDFS 文件存储系统的安装与使用

一、开发环境

  • MacBook Pro intel
  • Docker Desktop
  • Java Spring

二、Mac环境 Docker 的 FastDFS 安装

1. 拉取镜像

docker pull morunchang/fastdfs

2.启动镜像

# 192.168.31.253 = 你当前主机IP,自行配置
# tracker
docker run -d --name tracker -p 22122:22122 morunchang/fastdfs sh tracker.sh
# storage
docker run -d --name storage  -p 8080:8080 -p 23000:23000 -e TRACKER_IP=192.168.31.253:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh

3.tracker配置

#1.进入 tracker 环境
docker exec -it tracker /bin/bash

#2.tracker环境,修改配置文件
vim /etc/fdfs/storage.conf

#3.配置文件编辑模式,找到 tracker_server= 这一行,将IP地址改为你当前主机IP:22122,保存
tracker_server=192.168.31.253:22122

#4.tracker环境,执行命令获得容器内IP
fdfs_monitor /etc/fdfs/storage.conf

#如:	Storage 1:
#		id = 172.17.0.1
#		ip_addr = 172.17.0.1  ACTIVE

#5.退出 tracker 环境
exit

#6.执行以下命令,IP为第四步获得的容器IP
sudo ifconfig lo0 alias 172.17.0.1

#7.重启 docker 的 tracker 环境
docker restart tracker

三、Java 中的使用

resources/fdfs_client.conf 配置信息

connect_timeout=60
network_timeout=60
charset=UTF-8
http.tracker_http_port=8080
tracker_server=192.168.31.253:22122

file/FastDFSFile 对象

private byte[] content; //文件内容
private String ext; //文件扩展名
private String md5; //文件摘要
private String author; //文件作者

// 构造方法、getter/setter 省略...

Spring 依赖环境

 <!--    FastDFS客户端程序包    -->
 <dependency>
     <groupId>net.oschina.zcx7878</groupId>
     <artifactId>fastdfs-client-java</artifactId>
     <version>1.27.0.0</version>
 </dependency>

util/FastDFSUtil工具类方法

    /***
     * 初始化tracker信息
     */
    static {
        try {
            //获取tracker的配置文件fdfs_client.conf的位置
            String filePath = new ClassPathResource("fdfs_client.conf").getPath();
            //加载tracker配置信息
            ClientGlobal.init(filePath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /****
     * 文件上传
     * @param file : 要上传的文件信息封装->FastDFSFile
     * @return String[]
     *          1:文件上传所存储的组名
     *          2:文件存储路径
     */
    public static String[] upload(FastDFSFile file) {
        //获取文件作者
        NameValuePair[] meta_list = new NameValuePair[1];
        meta_list[0] = new NameValuePair(file.getAuthor());

        /***
         * 文件上传后的返回值
         * uploadResults[0]:文件上传所存储的组名,例如:group1
         * uploadResults[1]:文件存储路径,例如:M00/00/00/wKjThF0DBzaAP23MAAXz2mMp9oM26.jpeg
         */
        String[] uploadResults = null;
        try {
            //获取TrackerServer
            TrackerServer trackerServer = getTrackerServer();
            //通过TrackerServer创建StorageClient
            StorageClient storageClient = new StorageClient(trackerServer, null);
            //执行文件上传
            uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return uploadResults;
    }

Java Spring 使用

    @ApiOperation("文件上传")
    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) throws Exception {
        FastDFSFile fastDFSFile = new FastDFSFile(
                file.getOriginalFilename(), //文件名字
                file.getBytes(), //文件字节数组
                StringUtils.getFilenameExtension(file.getOriginalFilename()) //文件扩展名
        );

        String[] upload = FastDFSUtil.upload(fastDFSFile);
        return Arrays.toString(upload);
   }

上传成功,响应结果
[group1, M00/00/00/rBEABGTyCP-AIm6JAA66vo-zR5I920.png]

访问地址,预览图片
http://localhost:8080/group1/M00/00/00/rBEABGTyCP-AIm6JAA66vo-zR5I920.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值