1 Star 5 Fork 4

张奇峰 / fastdfs_client_go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

fastdfs_client_go

1.概述

2.FastDFS二进制通讯协议细节

点击查看GO 实现过程

3.安装本包

// 请在本仓库的 gitTag 中查看最新版本,永远建议大家使用最新版本.  
// 查看地址:https://github.com/qifengzhang007/fastdfs_client_go/tags
go  get  github.com/qifengzhang007/fastdfs_client_go@v1.0.5

4. 已封装的函数列表

  • 1.0.0 版本我们提供了核心功能,基本上可以解决绝大部分的需求,同时提供了非常详细的二进制协议对接细节、go 示例代码, 其他开发者可以仿照我们的项目结构自己扩展不常用功能.
  • 关于其他未实现的不常用功能,如果您需要,可以提 issue , 我们会在下个版本更新进去.
  • 在使用中出现的其他问题,都可以提 issue ,我们会在第一时间处理.

4.1 文件上传(指定文件名)

    // 设置 trackerServer 配置参数
    var conf = &fastdfs_client_go.TrackerStorageServerConfig{
	    // 替换为自己的 storagerServer ip 和端口即可,保证在开发阶段外网可访问
        TrackerServer: []string{"192.168.10.10:22122"},
        // tcp 连接池最大允许的连接数(trackerServer 和 storageServer 连接池共用该参数)
        MaxConns:      128,
    }
    # 文件上传核心函数
    fdfsClient, err := fastdfs_client_go.CreateFdfsClient(conf)
    fileId, err := fdfsClient.UploadByFileName(curDir + fileName)

4.2 文件上传(传递二进制)

    // 设置 trackerServer 配置参数
    var conf = &fastdfs_client_go.TrackerStorageServerConfig{
	    // 替换为自己的 storagerServer ip 和端口即可,保证在开发阶段外网可访问
        TrackerServer: []string{"192.168.10.10:22122"},
        // tcp 连接池最大允许的连接数(trackerServer 和 storageServer 连接池共用该参数)
        MaxConns:      128,
    }
    # 文件上传核心函数
    fdfsClient, err := fastdfs_client_go.CreateFdfsClient(conf)
    // 直接传递二进制上传文件,适合文件比较小的场景使用
    fileId, err := fdfsClient.UploadByBuffer([]byte("测试文本数据转为二进制直接上传"),

4.3 文件下载


    // 设置 trackerServer 配置参数
    var conf = &fastdfs_client_go.TrackerStorageServerConfig{
	    // 替换为自己的 storagerServer ip 和端口即可,保证在开发阶段外网可访问
        TrackerServer: []string{"192.168.10.10:22122"},
        // tcp 连接池最大允许的连接数(trackerServer 和 storageServer 连接池共用该参数)
        MaxConns:      128,
    }
    // 指定需要被下载的文件id (fileId)
    fileId := "group1/M00/00/01/MeiRdmISDUiAaURaAsRMrFnLJoE317.wav" // 大小 46419116,约 46M 左右
    // 创建 fdfs 客户端
    fdfsClient, err := fastdfs_client_go.CreateFdfsClient(conf)
    
    // 指定需要下载的文件id(fileId),最终的保存路径,开始下载
	fdfsClient.DownloadFileByFileId(fileId, "E:/音乐文件夹/下载测试-俩俩相忘.wav")

4.4 文件删除

    // 设置 trackerServer 配置参数
    var conf = &fastdfs_client_go.TrackerStorageServerConfig{
	    // 替换为自己的 storagerServer ip 和端口即可,保证在开发阶段外网可访问
        TrackerServer: []string{"192.168.10.10:22122"},
        // tcp 连接池最大允许的连接数(trackerServer 和 storageServer 连接池共用该参数)
        MaxConns:      128,
    }
	fdfsClient, err := fastdfs_client_go.CreateFdfsClient(conf)
	// 指定需要删除的文件Id
	fileId := "group1/M00/00/01/MeiRdmISSbuAZwwSAAAAD_Q4O2U879.txt"
	// 指定删除命令
	 err = fdfsClient.DeleteFile(fileId);
	 

4.5 获取远程文件信息

    // 设置 trackerServer 配置参数
    var conf = &fastdfs_client_go.TrackerStorageServerConfig{
	    // 替换为自己的 storagerServer ip 和端口即可,保证在开发阶段外网可访问
        TrackerServer: []string{"192.168.10.10:22122"},
        // tcp 连接池最大允许的连接数(trackerServer 和 storageServer 连接池共用该参数)
        MaxConns:      128,
    }
	fdfsClient, err := fastdfs_client_go.CreateFdfsClient(conf)
	// 指定需要查询的远程文件Id
	fileId := "group1/M00/00/01/MeiRdmISSbuAZwwSAAAAD_Q4O2U879.txt"
	// 查询远程文件信息,返回一个包含文件信息的结构体
	 remoteFileInfo, err := fdfsClient.GetRemoteFileInfo(fileId)
	 

以上命令的使用示例,点击查看单元测试详情

5.最后一些说明

  • 5.1 fastdfs 分布式文件系统应该部署在内网环境, 整个系统原则上是不对互联网直接开放访问权限的(除了开发调试之外).
  • 5.2 基于以上原因,开发者可以将用户上传的文件,首先保存在临时目录,然后调用本客户端将临时目录的文件上传到 fastdfs 文件系统, 获取可访问的文件id(fileId)(格式:group1/M00/00/01/MeiRdmISDUiAaURaAsRMrFnLJoE317.wav),最终返回给用户访问地址(建议通过nginx代理访问资源)
MIT License Copyright (c) 2022 张奇峰 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

fastdfs_client_go fastdfs 分布式文件系统 golang 客户端 展开 收起
Go
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/daitougege/fastdfs_client_go.git
git@gitee.com:daitougege/fastdfs_client_go.git
daitougege
fastdfs_client_go
fastdfs_client_go
master

搜索帮助