建立FastDFS的client

原创
小哥 3年前 (2022-11-09) 阅读数 53 #大杂烩
package com.***.***.file.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FilenameUtils;
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.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class FastDFSClient {
    @Value("${dfs.connect_timeout}")
    private String dfs_connect_timeout;
    @Value("${dfs.network_timeout}")
    private String dfs_network_timeout;
    @Value("${dfs.charset}")
    private String dfs_charset;
    @Value("${dfs.tracker_http_port}")
    private String dfs_tracker_http_port;
    @Value("${dfs.anti_steal_token}")
    private String dfs_anti_steal_token;
    @Value("${dfs.secret_key}")
    private String dfs_secret_key;
    @Value("${dfs.tracker_server}")

    //@Value("#{${dfs.tracker_server}.split(,)}")
    private String dfs_tracker_server;

    // 初始化FastDFS Client
    @Bean
    public StorageClient1 getStorageClient() {
        try {

            Properties props = new Properties();
            props.put(ClientGlobal.PROP_KEY_CONNECT_TIMEOUT_IN_SECONDS, dfs_connect_timeout);
            props.put(ClientGlobal.PROP_KEY_NETWORK_TIMEOUT_IN_SECONDS, dfs_network_timeout);
            props.put(ClientGlobal.PROP_KEY_CHARSET, dfs_charset);
            props.put(ClientGlobal.PROP_KEY_HTTP_TRACKER_HTTP_PORT, dfs_tracker_http_port);
            props.put(ClientGlobal.PROP_KEY_HTTP_ANTI_STEAL_TOKEN, dfs_anti_steal_token);
            props.put(ClientGlobal.PROP_KEY_HTTP_SECRET_KEY, dfs_secret_key);
            props.put(ClientGlobal.PROP_KEY_TRACKER_SERVERS, dfs_tracker_server);
            ClientGlobal.initByProperties(props);

            TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
            TrackerServer trackerServer = trackerClient.getConnection();
            if (trackerServer == null) {
                throw new IllegalStateException("getConnection return null");
            }

            StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
            if (storageServer == null) {
                throw new IllegalStateException("getStoreStorage return null");
            }

            return new StorageClient1(trackerServer, storageServer);

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}

yml根据他们自己dfs服务器配置如下:

dfs.port:  172.**.**.***:88   
dfs.port1: http://172.**.**.***:88  
dfs.connect_timeout: 1000   
dfs.network_timeout: 3000   
dfs.charset: UTF-8  
dfs.tracker_http_port: 8083   
dfs.anti_steal_token: no   
dfs.secret_key: FastDFS1111111111
dfs.tracker_server: 172.**.**.***:221220
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门