springboot+FastDFS上傳圖片

1.pom配置FastDFS依賴

        <dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.29-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

由于fastdfs-client-java jar包沒有上傳到中央倉庫,所以需要下載源碼進(jìn)行maven編譯再上傳到項(xiàng)目
下載地址:點(diǎn)擊進(jìn)入下載

2.導(dǎo)入jar包

下載后解壓打開項(xiàng)目并進(jìn)行編譯 mvn clean install


所需的jar包

打開我們的項(xiàng)目(idea工具)
File->Project Structure->Dependencies


上傳jar包

選擇并導(dǎo)入剛剛編譯好的jar包

3.配置信息

在resources下新建fdfs-client.conf

connect_timeout = 10
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FASTDFS1234567890
tracker_server = ip:22122

4.圖片上傳

package org.jeecg.common.util;

import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

/**
 * 上傳圖片到Fast
 *
 */
public class FastDFSUtils {
    private static final String CONF_FILENAME =  "fdfs-client.conf";

    private static  final String serverUrl = "http://ip";

    static {
        String filePath = (FastDFSUtils.class.getClass().getResource("/").getPath()+CONF_FILENAME).replaceAll("http://","\\");
        try {
            ClientGlobal.init(filePath);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能描述:文件上傳
     */
    public static String uploadFile(MultipartFile file) throws Exception {
        File toFile = MultipartFileToFile.multipartFileToFile(file);
        FileInputStream fis = null;
        NameValuePair[] meta_list = null;
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        fis = new FileInputStream(toFile);
        byte[] file_buff = null;
        if (fis != null) {
            int len = fis.available();
            file_buff = new byte[len];
            fis.read(file_buff);
        }
        String fileId = storageClient.upload_file1(file_buff, getFileExt(file.getName()), meta_list);
        String url = serverUrl+"/"+fileId;
        return url;
    }

    /**
     * 功能描述:文件下載
     */
    public static InputStream downloadFile(String fileId) throws IOException, MyException {
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        byte[] bytes = storageClient.download_file1(fileId);
        InputStream inputStream = new ByteArrayInputStream(bytes);
        inputStream.close();
        return inputStream;
    }



    /**
     * 功能描述:獲取文件名后綴(不包含點(diǎn))
     */
    private static String getFileExt(String fileName) {
        if (fileName == null || !fileName.contains(".")) {
            return "";
        } else {
            return fileName.substring(fileName.lastIndexOf(".") + 1); // 不帶最后的點(diǎn)
        }
    }


    /**
     * 功能描述: 刪除文件
     */
    public static int deleteFile(String fileId) throws IOException, MyException {
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        int result = storageClient.delete_file1(fileId);
        return result;
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容