欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FastDFS文件上传

程序员文章站 2022-04-08 09:24:31
...

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文件 -----就是服务器的域名
相关标签: 文件上传