docker安装fastdfs并结合springboot实践

1.打开虚拟机
运行docker

systemctl  start docker 

2.在docker上安装fastdfs

docker pull morunchang/fastdfs

下载后 启动tracker

docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh

启动storage

docker run -d --name storage --net=host -e TRACKER_IP=虚拟机ip:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh

重启storage

docker restart storage

创建springboot项目
导入依赖
pom.xml 参考

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.baidu</groupId>
    <artifactId>upload-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>upload-service</name>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.7</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

配置文件application.yml

server:
  port: 9004

logging:
  #file: demo.log
  pattern:
    console: "%d - %msg%n"
  level:
    org.springframework.web: debug
    com.baidu.uploadservice: debug

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 10MB #单个文件上传大小
      max-request-size: 20MB #总文件上传大小

fdfs:
  # 链接超时
  connect-timeout: 60
  # 读取时间
  so-timeout: 60
  # 生成缩略图参数
  thumb-image:
    width: 150
    height: 150
  tracker-list: 192.168.119.128:22122   # 自己虚拟机的IP地址

编写工具类

@Component
public class FileDfsUtil {

    @Autowired
    private FastFileStorageClient storageClient;

    /**
     * 上传文件
     * @param multipartFile
     * @return
     * @throws Exception
     */
    public String upload(MultipartFile multipartFile) throws Exception {
        //获取文件后缀名
        String extName = FilenameUtils.getExtension(multipartFile.getOriginalFilename());
        System.out.println("======xxxx========="+extName); //jpeg
        //组名  和路径 StorePath [group=group1, path=M00/00/00/wKh3gGDJZL-ARhexAAaGIb2yhI462.jpeg]
        StorePath storePath = storageClient.uploadImageAndCrtThumbImage(multipartFile.getInputStream(), multipartFile.getSize(), extName, null);
        System.out.println("****************====="+storePath);
        return storePath.getFullPath();
    }

    /**
     * 删除文件
     * @param fileUrl
     */
    public void deleteFile(String fileUrl) {
        StorePath storePath = StorePath.parseFromUrl(fileUrl);
        storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
    }




}

编写controller

@RestController
public class FileController {

    @Autowired
    private FileDfsUtil fileDfsUtil;

    /**
     * 上传文件
     * @param file
     * @return
     */
    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST, headers="content-type=multipart/form-data")
    public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
        String result = "";
        try {
            //获取完整路径  group1/M00/00/00/wKh3gGDJZL-ARhexAAaGIb2yhI462.jpeg
            String path = fileDfsUtil.upload(file);
            System.out.println("path:"+path);
            if (StringUtils.isEmpty(path)) {
                result = "上传失败";
            } else {
                result = path;
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = "服务器异常";
        }
        return ResponseEntity.ok(result);
    }

    /**
     *
     * @param filePathName
     * @return
     */
    @RequestMapping(value = "/deleteByPath", method = RequestMethod.GET)
    public ResponseEntity<String> deleteByPath(String filePathName) {
        fileDfsUtil.deleteFile(filePathName);
        return ResponseEntity.ok("success delete");
    }

}

访问路径

  • 上传图片到fastdfs
  • 在这里插入图片描述

删除图片fastdfs
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值