美文网首页
Java操作FastDFS

Java操作FastDFS

作者: candyicecream | 来源:发表于2021-05-13 10:48 被阅读0次

    1.下载编译

    GitHub:https://codeload.github.com/happyfish100

    Gitee:https://gitee.com/fastdfs100

    如:本文使用gitee做演示

    使用命令: git clone 地址  下载 或者直接下限压缩包进行解压

    maven编译:mvn clean install

    注:如果本地没有安装配置maven可以使用idea自带的进行编译

    2.pom.xml

    注:这边使用maven进行演示,如果不使用maven可以将编译后的jar导入Java项目,效果一样

    引入FastDFS的Maven的依赖包:

    <! -- 注:这个依赖没有出现在Maven的中央库中,需要要对源码进行编译将客户端的代码

        编译到maven的本地库中或直接拷贝依赖包文件到本地Maven库中 -->

    <dependencies>

        <dependency>

            <groupId>org.csource</groupId>

            <artifactId>fastdfs-client-java</artifactId>

            <version>1.29-SNAPSHOT</version>

        </dependency>

    </dependencies>

    3.配置

    在resources下新建fastdfs.conf:

    配置:

    #连接超时,单位秒

    connect_timeout=10

    #网络超时,单位秒

    network_timeout=30

    #字符集设置

    charset=UTF-8

    # tracker server 的访问 IP 和 Port。

    tracker_server=192.168.154.130:22122

    4.编写测试代码

    import org.csource.fastdfs.*;

    import java.io.IOException;

    public class FastDFSUtils {

    public static final String CONF_FILENAME  ="fastdfs.conf";//配置文件

        public static final String URL            ="http://192.168.154.128";//访问路径

        public static final String IMG_PATH      ="D:\\Pictures\\9.jpg";//测试文件上传

        public static final String FILE_EXTNAME  ="jpg";//测试扩展名

        public static final String DOWNLOAD      ="D:\\Pictures\\test.jpg";//下载

        public static void main(String[] args) {

    //上传

            String[]upload =upload(IMG_PATH,FILE_EXTNAME);

    String path =pathSplicing(upload);

    System.out.println(path);

    //下载

            int download =download(upload[0],upload[1],DOWNLOAD);

    System.out.println(download ==0 ?"成功" :"失败");

    //删除

            int delete =delete(upload[0],upload[1]);

    System.out.println(delete ==0 ?"成功" :"失败");

    }

    /**

        * 文件删除

        * @param groupName 文件组名

        * @param filename 文件路径

        * @return 返回值:0:成功, 其他:失败

        */

        private static int delete(String groupName,String filename) {

    StorageClient sc =null;

    int result = -1;

    try {

    //初始化,读取配置文件

                ClientGlobal.init(CONF_FILENAME);

    TrackerClient tc =new TrackerClient();

    TrackerServer ts =tc.getTrackerServer();

    StorageServer ss =tc.getStoreStorage(ts);

    //操作文件

                sc =new StorageClient(ts,ss);

    //组名,文件名

                result = sc.delete_file(groupName, filename);

    }catch (Exception e) {

    e.printStackTrace();

    }finally {

    if(sc!=null){

    try {

    sc.close();

    }catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return result;

    }

    /**

        * 文件下载

        * @param groupName 下载文件组名

        * @param image 下载文件路径

        * @param downloadPath 保存地址/文件名

        * @return 返回值:0:成功, 其他:失败

        */

        private static int download(String groupName,String image,String downloadPath) {

    StorageClient sc =null;

    int result = -1;

    try {

    //初始化,读取配置文件

                ClientGlobal.init(CONF_FILENAME);

    TrackerClient tc =new TrackerClient();

    TrackerServer ts =tc.getTrackerServer();

    StorageServer ss =tc.getStoreStorage(ts);

    //操作文件

                sc =new StorageClient(ts,ss);

    //下载文件组名, 下载文件路径,  保存路径/文件名

                result = sc.download_file(groupName, image, downloadPath);

    }catch (Exception e) {

    e.printStackTrace();

    }finally {

    if(sc!=null){

    try {

    sc.close();

    }catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return result;

    }

    /**

        * 文件上传

        * @param imgPath 文件路径

        * @param fileExtName 文件扩展名

        * @return 返回值:[0]:组名, [1]:路径

        */

        public static String[]upload(String imgPath,String fileExtName) {

    StorageClient sc =null;

    String[] result  =null;

    try {

    //初始化,读取配置文件

                ClientGlobal.init(CONF_FILENAME);

    TrackerClient tc =new TrackerClient();

    TrackerServer ts =tc.getTrackerServer();

    StorageServer ss =tc.getStoreStorage(ts);

    //操作文件

                sc =new StorageClient(ts,ss);

    //文件绝对路径, 文件扩展名, 属性文件(不做上传),

                result = sc.upload_appender_file(imgPath, fileExtName,null);

    }catch (Exception e) {

    e.printStackTrace();

    }finally {

    if(sc!=null){

    try {

    sc.close();

    }catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return result;

    }

    /**

        * 路径拼接

        * @param result 数组:[0]:组名, [1]:路径

        * @return 文件访问路径

        */

        public static String pathSplicing(String [] result) {

    String path ="";

    try {

    if (result !=null && result.length >0) {

    StringBuilder url =new StringBuilder();

    url.append(URL);

    for(String str:result){

    url.append("/");

    url.append(str);

    }

    path =url.toString();

    }

    }catch (Exception e) {

    e.printStackTrace();

    }

    return path;

    }

    }

    注:如果出现超时或者连接问题,检查端口是否开放

    开发端口

    sudo firewall-cmd --add-port=80/tcp --permanent

    sudo firewall-cmd --add-port=22122/tcp --permanent

    sudo firewall-cmd --add-port=23000/tcp --permanent

    重启防火墙

    firewall-cmd --reload

    说明:

    nginx: 80

    tracker_server: 22122

    trackerd: 23000

    FastDFS文件服务器安装配置使用

    相关文章

      网友评论

          本文标题:Java操作FastDFS

          本文链接:https://www.haomeiwen.com/subject/ifptjltx.html