FastDFS文件上传

本文深入探讨FastDFS,一个轻量级的分布式文件系统,适用于以文件为载体的在线服务,如相册和视频网站。文章详细介绍了其功能,包括文件存储、同步和访问,以及如何解决大容量存储和负载均衡问题。此外,还提供了FastDFS的上传和下载交互过程,以及如何在Java中实现文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FastDFS小结一

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务

上传交互过程

  1. client询问tracker上传到的storage,不需要附加参数;
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件上传。

下载交互过程

  1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件下载。
上传实现
  1. 导入依赖
		<dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27-SNAPSHOT</version>
        </dependency>
  1. 编写文件上传的工具类
public class FileUploadUtils {

    private static TrackerClient  trackerClient = null;
    private static StorageServer storageServer = null;
    private static TrackerServer trackerServer;

    /**
     * 构造方法,传入配置文件的路径
     * @param configlocation
     * @throws IOException
     * @throws MyException
     */
    public FileUploadUtils(String configlocation) throws IOException, MyException {
        if (configlocation.startsWith("classpath:")) {

            configlocation = configlocation.replace("classpath:", getClass().getResource("/").getPath());
            //找到配置文件的磁盘路径
            ///D:/idea-workspace/springmvc/court/target/classes/config.properties
           // System.out.println(configlocation);
        }
        ClientGlobal.init(configlocation);
        trackerClient = new TrackerClient();
        trackerServer = trackerClient.getConnection();
    }

    /**
     * 方法的重载   调用内部的方法
     * @param file
     * @param ext_name
     * @return
     * @throws IOException
     * @throws MyException
     */
    public static String upload_file(byte[] file, String ext_name) throws IOException, MyException {
        return upload_file(file, ext_name, null);
    }


    public static String upload_file(byte[] file, String ext_name, NameValuePair[] nameValuePairs) throws IOException, MyException {

        StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);
        //通过文件的字节和后缀名获得字符串数组
        String[] uploadFile = storageClient1.upload_file(file, ext_name, null);

        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < uploadFile.length; i++) {
            stringBuffer.append(uploadFile[i]);
            if (i == 0) {
                stringBuffer.append("/");
            }

        }
        //返回文件服务器的地址
        return stringBuffer.toString();
    }
}
  1. config.properties文件 -----就是服务器的域名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值