本仓库有开发和主分支,如果要使用,请使用master分支下的代码
只要仓库不是在暂停状态,那么就会有人一直维护和开发,请放心使用
c c++ 存储服务 c c++ 文件存储服务
c c++ file storage service
这是一个上传下载服务API网关,不是文件同步服务,也不是云存储.
这个服务的主要目的是为了给有上传下载服务业务需求的用户使用(比如需要开发上传下载服务的开发人员).
此服务器更偏向于存储传输与API接口管理,此服务可以用于上传下载的管理,网络文件共享或者软件更新服务.
目前最好的HTTP存储服务,更方便管理,代码更简洁.持续维护中...
基于libXEngine开发并实现的一套简洁高性能跨平台网络存储服务
软件特性:
- 支持HTTP协议上传和下载(采用POST和GET)
- 支持HTTP API接口事件通知与管理
- 支持HTTP加密与证书
- 采用数据库(MYSQL)记录信息
- 支持分布式
- 支持HTTP验证
- 支持详尽的日志和配置信息
- 支持多线程方式上传和下载文件
- 支持任务开始结束代理转发
- 支持P2P
- BT协议
- 数据分发
- 支持秒传和断点续传
- 支持上传和下载重定向
- 支持全速模式和限速模式
- 权限控制
- 上传文件覆写
- 支持转录(服务器上传下载)
- 支持WEBDAV协议上传下载文件
- 预创建文件
必须安装XEngine,版本需要V8.10或者以上版本,安装XEngine可以参考其Readme文档
GITEE:https://gitee.com/libxengine/libxengine
GITHUB:https://github.com/libxengine/libxengine
git clone https://gitee.com/libxengine/libxengine.git 或者 git clone https://github.com/libxengine/libxengine.git
window执行XEngine_WINEnv.bat 脚本.
Linux执行:sudo ./XEngine_LINEnv.sh -i 3
macos执行:./XEngine_LINEnv.sh -i 3
由于依赖的子模块,在你checkout仓库后,在仓库目录下执行下面的命令拉取子模块
git submodule init
git submodule update
如果github访问失败,你也可以clone该项目,在主目录下使用命令:git clone https://gitee.com/xengine/XEngine_OPenSource.git XEngine_Source/XEngine_Depend
使用VS打开并且编译,支持WINDOWS 7SP1以上系统
直接运行即可,使用XEngine_AuthorizeApp
如果需要bt协议支持,需要通过vcpkg安装bt支持库:./vcpkg.exe install libtorrent
Linux使用Makefile编译,UBUNTU22.04 x64或者RockyLinux x64
在控制台运行
如果需要bt协议支持,需要安装bt库,比如,在ubuntu下面安装:sudo apt install libtorrent-rasterbar-dev -y
使用makefile编译,控制台运行,需要mac 13以及以上版本
在控制台运行
如果需要bt协议支持,需要安装bt库,通过brew安装:brew install libtorrent-rasterbar
在XEngine_Source目录下执行命令
make 编译
make FLAGS=InstallAll 安装库程序
make FLAGS=CleanAll 清理编译
- 切换到MASTER分支
- 下载代码
- 编译
- 安装
- 运行
- 通过curl或postman 等三方工具测试上传下载
- XEngine_Docment 文档目录结构
- XEngine_Release 安装目录结构
- XEngine_Source 源代目录结构
- XEngine_APPClient 客户端演示代码(APPClient_UPDate为软件更新演示客户端)
- XEngine_SQLFile 数据库脚本文件
上传文件: curl -d 'hello xengine' -X POST "http://192.168.1.8:5102/api?filename=hello.txt&storeagekey=storagekey1"
下载文件: curl -X GET "http://192.168.1.8:5101/storagekey1/hello.txt"
秒传的实现不是靠服务器实现的,而是靠客户端实现的.
上传秒传的实现是先通过HASH查询文件是否在服务器,如果存在就不上传直接提示客户端上传成功.
下载秒传的实现是先通过HASH查询本地文件保存路径,如果存在就直接下载完成.
P2P分布式下载已经支持,不过目前只能在局域网中,暂时不支持跨网段,需要等待开发完毕
P2P分布式下载与其他下载工具的超线程下载一样,原理是使用HTTP RANGE字段实现.各位可以通过libcurl等库实现此功能.
修改配置文件为你需要的,然后直接运行服务即可
高级功能需要MYSQL的支持,安装完毕MYSQL后导入XEngine_SQLFile/XStorage_Create.sql 然后导入 XEngine_Storage.sql即可.
如果是升级安装,下载新版本后修改配置文件就可以直接运行了
如果使用了数据库,需要打开数据库匹配字段和表是否一致
你也可以观看视频教程来了解我们的代码框架情况:https://www.bilibili.com/video/BV1PF4m177Gt
你可以参考docment目录下的文档.里面包含了API协议和服务说明.
jsoncpp模块在使用的时候编译运行时库选择必须一致.否则会崩溃.
地址:app.xyry.org
端口:HTTP业务端口 5100,下载 5101,上传 5102
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
你可以通过此地址了解更多开发内容和计划:https://github.com/libxengine/XEngine_Storage/issues
如果你觉得这个软件对你有帮助,请你给我们一个START吧 也可以通过微信关注我们
如果你有问题或者发现程序有BUG和意见,可以在issues中提交