使用docker安装fastDFS,并SpringBoot整合测试

2021年11月22日 阅读数:2
这篇文章主要向大家介绍使用docker安装fastDFS,并SpringBoot整合测试,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1. 安装fastdfs必要组件 tracker 什么都不用改

docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

2. 安装fastdfs存储地址 storage 除了ip其余的都不用改

docker run -d --network=host --name storage -e TRACKER_SERVER=你服务器本身的ip:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

3. 进入容器修改配置 必定要,要否则连接不上

docker exec -it tracker bash

4. 修改配置

vi /etc/fdfs/client.conf

将配置 tracker_server=你本身的ip:22122html

到这其实fastDFS就配好了java

5. 建立项目测试

我这里用的是springBoot进行整合。swagger-ui进行图片上传git

5.1 pom依赖

        <!-- FastDFS依赖 -->
        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.5</version>
        </dependency>
        <!-- Swagger2 核心依赖 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

5.2 配置 yml 须要修改ip

spring:
  servlet:
    multipart:
      max-file-size: 100MB # 最大支持文件大小
      max-request-size: 100MB # 最大支持请求大小
fdfs:
  # 连接超时
  connect-timeout: 600
  # 读取时间
  so-timeout: 600
  # 生成缩略图参数
  thumb-image:
    width: 150
    height: 150
  tracker-list: 你本身的ip:22122

5.3 配置文件(两个)

SwaggerConfig.javagithub

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //必定要改为你本身项目的controller包路径,这里会扫描你的接口
                .apis(RequestHandlerSelectors.basePackage("com.example.fastdfs.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot利用Swagger构建API文档")
                .description("使用RestFul风格, 建立人:知了一笑")
                .termsOfServiceUrl("https://github.com/cicadasmile")
                .version("version 1.0")
                .build();
    }
}

DfsConfig.javaspring

@Configuration
@Import(FdfsClientConfig.class)
// Jmx重复注册bean的问题
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class DfsConfig {
}

5.4 工具类

FileDfsUtil.javadocker

@Component
public class FileDfsUtil {
    private static final Logger LOGGER = LoggerFactory.getLogger(FileDfsUtil.class);
    @Resource
    private FastFileStorageClient storageClient;

    /**
     * 上传文件
     */
    public String upload(MultipartFile file) throws Exception {
        StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
        return storePath.getFullPath();
    }

    /**
     * 删除文件
     */
    public void deleteFile(String fileUrl) {
        if (StringUtils.isEmpty(fileUrl)) {
            LOGGER.info("fileUrl == >>文件路径为空...");
            return;
        }
        try {
            StorePath storePath = StorePath.parseFromUrl(fileUrl);
            storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
        } catch (Exception e) {
            LOGGER.info(e.getMessage());
        }
    }
}

5.5 controller接口

FileController.javaapi

@RestController
public class FileController {
    @Resource
    private FileDfsUtil fileDfsUtil;

    /**
     * 文件上传
     */
    @ApiOperation(value = "上传文件", notes = "测试FastDFS文件上传")
    @RequestMapping(value = "/uploadFile", headers = "content-type=multipart/form-data", method = RequestMethod.POST)
    public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
        String result;
        try {
            String path = fileDfsUtil.upload(file);
            if (!StringUtils.isEmpty(path)) {
                result = path;
            } else {
                result = "上传失败";
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = "服务异常";
        }
        return ResponseEntity.ok(result);
    }

    /**
     * 文件删除
     */
    @RequestMapping(value = "/deleteByPath", method = RequestMethod.GET)
    public ResponseEntity<String> deleteByPath() {
        String filePathName = "group1/M00/00/00/wKhIgl0n4AKABxQEABhlMYw_3Lo825.png";
        fileDfsUtil.deleteFile(filePathName);
        return ResponseEntity.ok("SUCCESS");
    }
}

5.6 SpringBoot启动类

@EnableSwagger2
@SpringBootApplication
public class FastdfsApplication {
    public static void main(String[] args) {
        SpringApplication.run(FastdfsApplication.class, args);
    }
}

5.7 测试

访问 http://localhost:8080/swagger-ui.htmlbash

上传测试.png

Response Body返回地址表示上传成功。服务器

5.8 访问图片

默认的话,是经过你的 ip:8888/上面返回的地址 若是你是阿里云服务就要手动开放 888八、2212二、23000 这三个端口app

例如:http://10.168.1.118:8888/group1/M00/00/00/CqgBdl-90d2ACoMBAABNQiCy_dw419.jpg

转载:原文地址

本文同步分享在 博客“吟风者”(JianShu)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。