fastdfs文件服务器-客户端实现

需要的依赖:

<!-- fastdfs jar依赖 -->
		<dependency>
			<groupId>org.csource</groupId>
			<artifactId>fastdfs</artifactId>
			<version>1.0.0</version>
		</dependency>

dfs的配置文件:

connect_timeout = 2000
network_timeout = 30000
charset = ISO8859-1
http.tracker_http_port = 8080
http.anti_steal_token = false
http.secret_key = FastDFS1234567890


tracker_server.length = 1
tracker_server1 = 182.92.105.142:22122


客户端client java:

package com.citic.gatz.service.impl;

import java.io.InputStream;
import java.net.InetSocketAddress;
import java.util.Properties;

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerGroup;
import org.csource.fastdfs.TrackerServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class FdfsUpload {
    private final static Logger logger = LoggerFactory.getLogger(FdfsUpload.class);

    public FdfsUpload() {
        try {
        	//URL fileURL= this.getClass().getResource("/fdfs_client.conf");     
            //ClientGlobal.init(fileURL.getFile());
        	//返回读取指定资源的输入流    
            InputStream is=this.getClass().getResourceAsStream("/fdfs_client.conf");
            Properties p = new Properties();
            p.load(is);
            ClientGlobal.setG_connect_timeout(Integer.valueOf(p.getProperty("connect_timeout")));
            ClientGlobal.setG_network_timeout(Integer.valueOf(p.getProperty("network_timeout")));
            ClientGlobal.setG_charset(p.getProperty("charset"));
            ClientGlobal.setG_tracker_http_port(Integer.valueOf(p.getProperty("http.tracker_http_port")));
            ClientGlobal.setG_anti_steal_token(Boolean.valueOf(p.getProperty("http.anti_steal_token")));
            ClientGlobal.setG_secret_key(p.getProperty("http.secret_key"));
            
            //tracker_server
            String ip = p.getProperty("tracker_server1").split(":")[0];
            Integer port = Integer.valueOf(p.getProperty("tracker_server1").split(":")[1]);
            InetSocketAddress[] tracker_servers = new InetSocketAddress[Integer.valueOf(p.getProperty("tracker_server.length"))];
            tracker_servers[0] = new InetSocketAddress(ip, port);
			ClientGlobal.setG_tracker_group(new TrackerGroup(tracker_servers));
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("fastdfs init failed e={}", e);
        }
        logger.info("network_timeout=" + ClientGlobal.g_network_timeout + "ms");
        logger.info("connect_timeout=" + ClientGlobal.g_connect_timeout + "ms");
        logger.info("charset=" + ClientGlobal.g_charset);
        
    }

    public String upload(byte[] filebuf, String filename) {
        try {

            TrackerClient tc = new TrackerClient();

            TrackerServer ts = tc.getConnection();
            if (ts == null) {
                logger.info("getConnection return null");
                return null;
            }

            StorageServer ss = tc.getStoreStorage(ts);
            if (ss == null) {
                logger.info("getStoreStorage return null");
            }

            StorageClient1 sc1 = new StorageClient1(ts, ss);

            // NameValuePair[] metaList = new NameValuePair[1];
            // metaList[0] = new NameValuePair("fileName",
            // filename);//ChAL8VXSinWAHYvqAAC6gGlp1Zs535.pcm-m中记录文件名
            String fileid = sc1.upload_file1(filebuf, filename.substring(filename.lastIndexOf(".") + 1), null);
            
            // sc1.upload_file(file_buff, file_ext_name, meta_list)

            logger.info("Upload local file " + filename + " ok, fileid=" + fileid);
            return fileid;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }

    }
    
    public byte[] download(String fileId) {
        try {

            TrackerClient tc = new TrackerClient();

            TrackerServer ts = tc.getConnection();
            if (ts == null) {
                logger.info("getConnection return null");
                return null;
            }

            StorageServer ss = tc.getStoreStorage(ts);
            if (ss == null) {
                logger.info("getStoreStorage return null");
            }

            StorageClient1 sc1 = new StorageClient1(ts, ss);

            // NameValuePair[] metaList = new NameValuePair[1];
            // metaList[0] = new NameValuePair("fileName",
            // filename);//ChAL8VXSinWAHYvqAAC6gGlp1Zs535.pcm-m中记录文件名
           // String fileid = sc1.upload_file1(filebuf, filename.substring(filename.lastIndexOf(".") + 1), null);
            logger.info("download file ok, fileid =" + fileId);
            return sc1.download_file1(fileId);
            // sc1.upload_file(file_buff, file_ext_name, meta_list)

        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }
    
    public int delete(String fileId) {
    	try {
            TrackerClient tc = new TrackerClient();
            TrackerServer ts = tc.getConnection();
            if (ts == null) {
                logger.info("getConnection return null");
                return -1;
            }
            StorageServer ss = tc.getStoreStorage(ts);
            if (ss == null) {
                logger.info("getStoreStorage return null");
                return -1;
            }
            StorageClient1 sc1 = new StorageClient1(ts, ss);
            
            int i = sc1.delete_file1(fileId);
            logger.info("delete file ok, fileid =" + fileId);
            return i;

        } catch (Exception ex) {
            return -1;
        }
    }
}

初始化配置文件的方式有两种:

1.直接使用ClientGlobal.init(file);初始化配置文件的方式

2.ClientGloabl.setXX();使用set参数注入的方式

### 回答1: 要下载fastdfs-client-java:1.29-snapshot,可以按照以下步骤进行: 首先,打开一个可用的Web浏览器,例如Google Chrome或Mozilla Firefox。 在浏览器的搜索栏中输入“fastdfs-client-java:1.29-snapshot下载”进行搜索。 选择一个可靠的下载站点,例如GitHub或官方网站。 在下载站点上搜索fastdfs-client-java:1.29-snapshot,并找到对应的下载链接。 点击下载链接,将文件保存到本地计算机上的指定位置。 下载完成后,检查所下载文件的完整性和安全性。可以使用杀毒软件进行扫描,确保文件没有病毒或恶意软件。 解压下载的文件(如果有必要),并查看其中的文档或说明,以了解如何使用fastdfs-client-java:1.29-snapshot。 根据文档中的说明,将fastdfs-client-java:1.29-snapshot导入到项目中。 根据具体项目需求,配置和使用fastdfs-client-java:1.29-snapshot进行文件存储或处理操作。 需要注意的是,fastdfs-client-java:1.29-snapshot是一个开源的Java客户端库,用于与FastDFS分布式文件系统进行交互。它提供了一些API和方法,可以方便地在Java项目中使用FastDFS。在使用该库之前,确保了解FastDFS的基本原理和配置要求,以便正确地使用和配置fastdfs-client-java:1.29-snapshot。 ### 回答2: 要下载fastdfs-client-java:1.29-snapshot,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器,例如谷歌浏览器、火狐浏览器等。 2. 在搜索引擎中输入“fastdfs-client-java:1.29-snapshot下载”,然后按下Enter键。 3. 在搜索结果中,找到适合您系统版本的fastdfs-client-java:1.29-snapshot下载链接。 4. 单击该链接,可能会弹出文件下载对话框,您可以选择保存文件的位置。 5. 选择一个合适的文件保存位置,然后单击“保存”按钮。 6. 下载开始后,请耐心等待直到文件完成下载。 7. 下载完成后,您可以前往保存文件的位置查看下载的文件。 请注意,根据您的网络速度和服务器响应时间,下载过程可能需要一些时间。而且请确保从可信赖的网站下载文件,以确保文件的完整性和安全性。 ### 回答3: 要下载fastdfs-client-java:1.29-snapshot,可以按照以下步骤进行操作: 1. 打开浏览器,进入FastDFS官方GitHub仓库的页面(https://github.com/happyfish100/fastdfs-client-java)。 2. 在页面上找到并点击"Code"按钮,然后选择"Download ZIP"选项,即可将整个代码库以zip压缩包的形式下载到本地。 3. 下载完成后,解压缩该zip压缩包,得到一个文件夹,里面包含了fastdfs-client-java的全部源代码。 4. 进入解压后的文件夹,可以看到该项目的源代码文件和相关配置文件。 5. 如果需要编译和构建项目,需要安装maven(https://maven.apache.org/),并在命令行中进入到该项目根目录下。 6. 使用maven命令进行项目构建,例如运行"mvn clean install"命令,该命令会下载所有依赖库并编译项目。 7. 若只需要使用已经编译好的jar包,则可以直接在该项目的GitHub页面上找到可用的jar包下载链接。 8. 点击下载链接,将fastdfs-client-java:1.29-snapshot的jar包保存到本地。 至此,你已经成功下载了fastdfs-client-java:1.29-snapshot。你可以将该jar包导入到你的Java项目中,以使用fastdfs-client-java提供的功能。需要注意的是,如果你在经过以上步骤后遇到了任何问题,建议查阅FastDFS官方文档或向FastDFS社区提问以获得更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值