SpringBoot整合FastDFS詳細版

引言

接上一篇 Linux下玩轉FastDFS

FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。
FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。

下載FastDFS

通過git下載fdfs的客戶端,因爲maven倉庫裏是沒有這個包的,要自行下載
https://github.com/happyfish100/fastdfs-client-java
cmd窗口 git clone https://github.com/happyfish100/fastdfs-client-java

在這裏插入圖片描述

導入FastDFS工程到IDEA

在這裏插入圖片描述

安裝到maven倉庫

在這裏插入圖片描述

創建springboot工程進行整合

pom.xml
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.21.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27-SNAPSHOT</version>
        </dependency>
    </dependencies>
創建tracker.conf配置文件
tracker_server=192.168.253.128:22122
# 連接超時時間,針對socket套接字函數connect,默認爲30秒
connect_timeout=30000
# 網絡通訊超時時間,默認是60秒
network_timeout=60000
封裝工具類
package com.xueqimiao.util;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;

public class PmsUploadUtil {

    public static String uploadImage(MultipartFile multipartFile) {

        //ip地址
        String imgUrl =  "http://192.168.253.128";

        // 上傳圖片到服務器
        // 配置fdfs的全局鏈接地址
        String tracker = PmsUploadUtil.class.getResource("/tracker.conf").getPath();// 獲得配置文件的路徑

        try {
            ClientGlobal.init(tracker);
        } catch (Exception e) {
            e.printStackTrace();
        }

        TrackerClient trackerClient = new TrackerClient();

        // 獲得一個trackerServer的實例
        TrackerServer trackerServer = null;
        try {
            trackerServer = trackerClient.getConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 通過tracker獲得一個Storage鏈接客戶端
        StorageClient storageClient = new StorageClient(trackerServer,null);

        try {

            byte[] bytes = multipartFile.getBytes();// 獲得上傳的二進制對象

            // 獲得文件後綴名
            String originalFilename = multipartFile.getOriginalFilename();// a.jpg
            System.out.println(originalFilename);
            int i = originalFilename.lastIndexOf(".");
            String extName = originalFilename.substring(i+1);

            String[] uploadInfos = storageClient.upload_file(bytes, extName, null);

            for (String uploadInfo : uploadInfos) {
                imgUrl += "/"+uploadInfo;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return imgUrl;
    }
}

創建Controller
package com.xueqimiao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.xueqimiao.util.PmsUploadUtil;

@Controller
public class IndexController {

	@RequestMapping("index")
    public String index(){
        return "index";
    }
	@RequestMapping(value="fileUpload",method=RequestMethod.POST)
	@ResponseBody
	public String fileUpload(@RequestParam("file") MultipartFile multipartFile) {
		String url = PmsUploadUtil.uploadImage(multipartFile);
		return url;
	}
}
application.yml
server:
  port: 8888
spring:
  mvc: 
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳">
</form>
</body>
</html>
測試

啓動項目運行 localhost:8888/index
在這裏插入圖片描述

上傳之後會返回一個地址在這裏插入圖片描述
將這個地址複製到瀏覽器訪問
在這裏插入圖片描述
能看到圖片就說明整合成功了.
附上git代碼地址:https://github.com/xueqimiao/SpringBoot_FastDFS.git

下期再見。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章