This repository has a development and master branch. If you want to use it, please use the master branch
As long as the repository is not in a suspended state, someone will maintain and develop it all the time, please use it with confidence
c c++ 存储服务 c c++ 文件存储服务
c c++ file storage service
This is an api gateway for uploading and downloading.
The service is for users who have business needs for upload and download services (such as developers who need to upload and download servers).
This server is more inclined to storestorage transfer and API Manage interface,the service can be used upload and download management and network file shared and software update service.
best storage service for http,more concise code. On going maintenance
The purpose of development and implementation based on libXEngine is a cross-platform network storage service
feature list:
- support file http upload and download(use post and get method)
- support http api notify of event and management api interface
- support http encrypt and cert data transimission
- support database(mysql) record infomation.
- support load banace
- supprot http auth
- support log and config
- Support multi-threaded file upload and download
- supprot task start and end proxy forwarding
- support p2p
- bt protocol
- data distributed
- support second pass and Resumable
- support upload and download Redirect
- support full speed and limit speed
- permission control
- upload file rewrite
- support convert record(service upload and download)
- webdav protocol download and upload file support
- preview file create
you must install XEngine,need V9.x or above,install XEngine can be refer to xengine Readme docment
GITEE:https://gitee.com/libxengine/libxengine
GITHUB:https://github.com/libxengine/libxengine
git clone https://gitee.com/libxengine/libxengine.git or git clone https://github.com/libxengine/libxengine.git
window Exection XEngine_WINEnv.bat
Linux Exection:sudo ./XEngine_LINEnv.sh -i 3
Macos Exection:./XEngine_LINEnv.sh -i 3
Due to the dependent sub-modules, after you checkout the warehouse, execute the following command in the warehouse directory to pull the sub-modules
git submodule init
git submodule update
use vs open and compile,suport windows 7sp1 and above
Just Run it,use XEngine_AuthorizeApp
if you need bt protocol support,you must install bt library by vcpkg:./vcpkg.exe install libtorrent
use makefile compile,UBUNTU22.04 or above
Run it on the terminal
if you need bt protocol support,you must install bt library:sudo apt install libtorrent-rasterbar-dev -y
use makefile compile,mac 13 and above
Run it on the terminal
if you need bt protocol support,you must install bt library:brew install libtorrent-rasterbar
execute command in XEngine_Source path
make complie
make FLAGS=InstallAll install
make FLAGS=CleanAll clear
- Switch to the MASTER branch
- download code
- complie
- install
- run
- use curl or postman test upload and download
The Second pass is not realized by the server, it is by the client
upload file second pass is first check the HASH file is on the server, if has file on the server, it will directly prompt the upload is successful.
The realization of downloading second transmission is to first query the local file save path through HASH, and download it directly if it exists.
P2P distributed download has been supported, but currently only in the lan,cross-network segment is not supported for the time being, you need to wait for the development to be completed
P2P distributed download is the same as the hyper-threaded download of other download tools. The principle is to use the HTTP RANGE field. You can implement this function through libraries such as libcurl.
- XEngine_Docment docment directory
- XEngine_Release install directory
- XEngine_Source code directory
- XEngine_APPClient client code dir(APPClient_UPDate is software update example of client)
- XEngine_SQLFile database sql file
UPLoad File: curl -d 'hello xengine' -X POST "http://192.168.1.8:5102/api?filename=hello.txt&storeagekey=storagekey1"
Download File: curl -X GET "http://192.168.1.8:5101/storagekey1/hello.txt"
Modify the configuration file to what you need, and then run the service directly
Advanced functions require the support of MYSQL. After installing MYSQL, import XEngine_SQLFile/XStorage_Create.sql and then import XEngine_Storage.sql.
If it is an upgrade installation, after downloading the new version and modifying the configuration file, it can be run directly
If you use a database, you need to open the database matching fields and tables are consistent
You can refer to the document under the docment directory. It contains API protocol and service description.
When the jsoncpp module is used, the compilation runtime library selection must be consistent
Address:app.xyry.org
Port:HTTP Center Port 5100,Download 5101,UPLoad 5102
- Fork this code
- Create new Feat_xxx branch
- Submit the code
- New Pull Request
You can learn more about development content and plans at this address:https://github.com/libxengine/XEngine_Storage/issues
If you think this software is helpful to you, please give us a START
and wechat qr scan to follow us
if you have eny quest.post issues...