springboot整合Fastdfs


一、利用docker安裝fastdfs

在搭建fastDFS文件上傳下載服務器之前,你需要准備的有一個可連接的linux服務器,並且該linux服務器上已經安裝了docker,若還有沒安裝docker的,先百度自行安裝docker。

1.在dockerHub中查詢需要下載的fastdfs版本,我下載版本如下圖所示,下載命令:docker pull delron/fastdfs:latest

 

2.下載完成后,查看下載成功的fastdfs鏡像,利用docker images命令查看,如圖,下載成功

 

 

 

 

3.執行命令:mkdir -p  /data/tracker,該目錄用於和tracker服務器進行目錄掛載

4.執行命令創建tracker容器:docker run -id --name tracker --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/tracker:/fastdfs/tracker/data season/fastdfs:1.2 tracker

 

 

5.執行命令:mkdir -p /data/storage,該目用於錄存儲上傳的文件

6.執行命令創建storage容器:docker run -id --name storage --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/storage:/fastdfs/store_path -e TRACKER_SERVER="49.233.170.221:22122" delron/fastdfs  storage

其中49.233.170.221換成自己服務的ip地址(最好是外網能訪問的ip地址)

 

 

7. 執行命令:dockers ps -a 查看tracker和storage容器啟動情況,如下圖,表示容器正常啟動

 

 

 

 

8.進入tracker容器中修改client.conf配置文件中tracker_server的ip地址為當前服務器地址ip

  ①.執行命令docker exec -it tracker bash進入tracker容器中

  ②.執行命令vi /etc/fdfs/client.conf修改配置文件中的tracker_server為當前服務器ip

   ③.在tracker容器中創建一個測試文件,執行命令:echo "Hello Fasfdfs!" >index.html

   ④. 將文件上傳到服務器,執行命令:fdfs_upload_file /etc/fdfs/client.conf index.html,返回如下圖說明上傳成功

 

9.在別的機器通過瀏覽器訪問http://ip地址:8888/+上傳返回值,即可成功訪問上傳的文件

二、springboot整合Fastdfs

1.創建一個springboot項目,只勾選web模塊

2.在pom.xml中導入fastdfs相關的jar包(此處我順便把swagger整合進去,便於測試)

 

 <!-- 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>
        <!-- 連接fastdfs文件系統 -->
        <dependency>
            <groupId>net.oschina.zcx7878</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27.0.0</version>
        </dependency> 

3.在項目resource包下創建配置文件fdfs_client.conf,其中ip為自己對應服務器的ip地址

connect_timeout=30
network_timeout=60
charset = UTF-8
http.tracker_http_port = 8888
http.anti_steal_token = no
http.secret_key =
tracker_server=ip:22122

4.創建FastDFSConfig的配置類:

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.TrackerClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
/**
 * fastDFS文件上傳的配置
 */
@Configuration
public class FastDFSConfig {
    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Value("classpath:fdfs_client.conf")
    private Resource ccs;

    @Bean
    public TrackerClient initClient(){
        try{
            ClientGlobal.init(ccs.getFilename());
            return new TrackerClient();
        }catch (Exception e){
            log.info("FastDFS創建客戶端失敗");
            return null;
        }
    }
}

 

5.創建SwaggerConfig的配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.zbl")) //注意修改成自己的包路徑,不然掃描不到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();
    }
}

 

6.啟動類添加@EnableSwagger2,用於啟用swagger注解,默認訪問地址:http://localhost:6060/swagger-ui.html#,6060為項目啟動端口,默認為8080

7.啟動成功,訪問界面如下:

 

 8.選擇文件上傳成功,返回如下所示:

 

 9.瀏覽器訪問圖片成功,OK,大功告成:

 

 三、代碼參考:目前碼雲還在完善中,后期添加源碼鏈接

   說明:為何會詳細講解fastdfs的安裝,因為我作為一個后端開發人員對這些安裝不是很熟悉,搞了3個小時才搞定,所以記錄詳細一點,以便於其余后端開發人員能快速上手,至於docker的安裝就自行百度吧。我的服務器用的阿里雲的centons7服務器,去年花了2斤豬肉的錢買的,哈哈哈,爽!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM