zoukankan      html  css  js  c++  java
  • FastdDFS入门二 简单使用

    java代码操作

    2.1、启动服务器

    先启动Tracker服务器与Storage服务器,然后启动linux服务器。

    /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
    /usr/local/nginx/sbin/nginx

    2.2、初始化编程环境

    要用java操作 FastDSF 需要引入作者提供的源码,因为作者提供的源码并未编译发布到maven的中央仓库,因此需要我们自己编译,并安装到本地的mavn仓库。

    1、下载源码

    https://github.com/happyfish100/fastdfs-client-java

    2、编译安装

    对下载的源码进行解压,并进入到解压目录,执行mvn clean install命令,此时就会生成一个jar包,并安装到本地的maven仓库。

    3、项目中引入jar包

    在执行完第二步之后,就可以在项目中通过maven坐标引入jar包了。

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

    2.3、测试代码

    初始化完成编程环境之后,我们就可以编写测试代码了

    1、配置一个.properties代码。

    fastdfs.connect_timeout_in_seconds = 5
    fastdfs.network_timeout_in_seconds = 30
    fastdfs.charset = UTF-8
    fastdfs.http_anti_steal_token = false
    fastdfs.http_secret_key = FastDFS1234567890
    fastdfs.http_tracker_http_port = 80
    ​
    fastdfs.tracker_servers = 192.168.2.136:22122
    ​
    fastdfs.connection_pool.enabled = true
    fastdfs.connection_pool.max_count_per_entry = 500
    fastdfs.connection_pool.max_idle_time = 3600
    fastdfs.connection_pool.max_wait_time_in_ms = 1000

    除了fastdfs.tracker_servers之外,其他的配置都不是必须的。参考文档:https://github.com/happyfish100/fastdfs-client-java

    2、编写测试代码

    package com.jwt.test;
    ​
    import org.csource.fastdfs.*;
    import org.springframework.core.io.ClassPathResource;
    ​
    import java.io.IOException;
    ​
    public class FastDFS {
    ​
        public static void main(String[] args) throws Exception {
            String uploadFilePath="D:/电子书籍/makedown_picture/bean的生命周期1.JPG";
    ​
            String filePath = new ClassPathResource("application.properties").getFile().getAbsolutePath();
            System.out.println(filePath);
            // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。
            ClientGlobal.initByProperties(filePath);
            // 2、创建一个 TrackerClient 对象。直接 new 一个。
            TrackerClient trackerClient = new TrackerClient();
            // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。
            TrackerServer trackerServer = trackerClient.getTrackerServer();
            // 4、创建一个 StorageServer 的引用,值为 null
            StorageServer storageServer = null;
            // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            // 6、使用 StorageClient 对象上传图片。
            //扩展名不带“.”
            String[] strings = storageClient.upload_file(uploadFilePath, "jpg",
                    null);
            // 7、返回数组。包含组名和图片的路径。
            for (String string : strings) {
                System.out.println(string);
            }
            System.out.println("上传完成");
        }
    }
    ​
    ​

    注意:这里采取的是.properties文件,并非.conf文件,所以初始化时的代码是ClientGlobal.initByProperties(filePath);

    2.4、工具类

    可以封装工具类,来操作FastDFS

    package com.maxrocky.tools;
     
            import java.io.File;
            import java.util.HashMap;
            import java.util.Map;
     
            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;
     
            public class FastDFSClient {
     
            private TrackerClient trackerClient = null;
            private TrackerServer trackerServer = null;
            private StorageServer storageServer = null;
            private StorageClient1 storageClient = null;
     
            public FastDFSClient(String conf) throws Exception {
                if (conf.contains("classpath:")) {
                    conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
                }
                ClientGlobal.init(conf);
                trackerClient = new TrackerClient();
                trackerServer = trackerClient.getConnection();
                storageServer = null;
                storageClient = new StorageClient1(trackerServer,   storageServer);
            }
     
            /**
            * 上传文件方法
            * <p>Title: uploadFile</p>
            * <p>Description: </p>
            * @param fileName 文件全路径
            * @param extName 文件扩展名,不包含(.)
            * @param metas 文件扩展信息
            * @return
            * @throws Exception
            */
            public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
                String result = storageClient.upload_file1(fileName, extName, metas);
                return result;
            }
     
     
            public String uploadFile(String fileName) throws Exception {
                return uploadFile(fileName, null, null);
            }
     
            public String uploadFile(String fileName, String extName) throws Exception {
                return uploadFile(fileName, extName, null);
            }
     
            /**
            * 上传文件方法
            * <p>Title: uploadFile</p>
            * <p>Description: </p>
            * @param fileContent 文件的内容,字节数组
            * @param extName 文件扩展名
            * @param metas 文件扩展信息
            * @return
            * @throws Exception
            */
            public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
                String result = storageClient.upload_file1(fileContent, extName, metas);
                return result;
            }
     
            public String uploadFile(byte[] fileContent) throws Exception {
                return uploadFile(fileContent, null, null);
            }
     
             public String uploadFile(byte[] fileContent, String extName) throws Exception {
                return uploadFile(fileContent, extName, null);
             }
            }

    上述代码中只有上传代码,实际上还可以删除与下载:

    
    
    
    public int delete_file(String group_name, String remote_filename) throws IOException, MyException ;
    public byte[] download_file(String group_name, String remote_filename) throws IOException, MyException
  • 相关阅读:
    元音字母
    最近使用LINQ遇到的故障
    ASP.NET 2.0下实现匿名用户向注册用户的迁移(下)
    ASP.NET MVC 2配置使用CKEditor编辑器
    ASP.NET 角色及成员管理(entry 'AspNetSqlMembershipProvider' has already been added错误的解决)
    为什么Firefox 3及之后的版本不能加载本地的JavaScript文件了?
    在ASP.NET MVC中使用DropDownList
    LINQ entityset 不包含GetEnumerator的定义,在MVC中使用entity framework(EF)出现“必须添加对程序集“System.Data.Entity”解决方法
    去除element.style样式
    判断ViewData[""]是否为空
  • 原文地址:https://www.cnblogs.com/cplinux/p/15614435.html
Copyright © 2011-2022 走看看