-
在ipfs官网下载ipfs-desktop(https://github.com/ipfs/ipfs-desktop/releases),安装并启动(安装教程:https://docs.ipfs.tech/install/ipfs-desktop/#macos);
-
在本地安装golang环境(https://go.dev/dl/),需安装go1.19.9版本,下载安装包时注意区分开发电脑的芯片架构
-
克隆代码并编译:
git clone https://github.com/fileauction/go-permastar.git make build
-
初始化permastar配置(默认配置目录为
~/.permastar/config.yaml
):cd bin ./permastar-server init
-
启动permastar守护进程:
./permastar-server daemon
-
默认监听地址:
若要更改监听地址或端口,修改
~/.permastar/config.yml
中的配置项即刻IPFSNode: GatewayIP: 127.0.0.1 GatewayPort: "5001"
创建用户根目录
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
accountAddr | string | 用户的钱包账号地址 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据,该接口为null |
请求:
curl --location 'http://127.0.0.1:9000/user' \
--header 'Content-Type: application/json' \
--data '{"accountAddress": "0x10163d42008C943FA23a611D487f71a1d8f82a79"}'
返回:
{
"code": 200,
"message": "OK",
"data": null
}
获取指定目录下的文件列表(包含目录)
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的查询目录路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据 |
类型:[]object
object参数:
参数名称 | 类型 | 描述 |
---|---|---|
Name | string | 文件/目录名称 |
Type | int | 对象类型 0=文件 1=目录 |
Size | int | 对象大小(字节) |
Hash | string | CID |
请求:
curl --location 'http://127.0.0.1:9000/data/dir?path=%2F' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79'
返回:
{
"code": 200,
"message": "OK",
"data": [
{
"Name": "test-dir",
"Type": 1,
"Size": 0,
"Hash": "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"
},
{
"Name": "截屏2023-03-23 14.21.47.png",
"Type": 0,
"Size": 1132590,
"Hash": "QmPiRyBa1uQQPu6RzwjWpFnxXc2NaFFoKcrEGRjTALHU35"
}
]
}
在指定路径下创建空目录
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据 |
类型:object
object参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
cid | string | CID |
Size | int | 对象大小(字节) |
请求:
curl --location 'http://127.0.0.1:9000/data/dir' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--header 'Content-Type: application/json' \
--data '{"path":"/test-dir"}'
返回:
{
"code": 200,
"message": "OK",
"data": {
"path": "/test-dir",
"cid": "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"
}
}
删除指定的目录
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据,该接口为null |
请求:
curl --location --request DELETE 'http://127.0.0.1:9000/data/dir' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--header 'Content-Type: application/json' \
--data '{"path":"/test-dir"}'
返回:
{
"code": 200,
"message": "OK",
"data": null
}
下载指定目录文件
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
文件字节流
请求:
curl --output test.png --location 'http://127.0.0.1:9000/data/file' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--form 'files=@"/Users/xuqiang/Documents/截屏2023-03-23 14.21.47.png"' \
--form 'path="/"'
返回:
test.png
获取指定路径文件信息
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的查询目录路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据 |
类型:object
object参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 文件路径 |
cid | string | cid |
size | int | 对象大小(字节) |
请求:
curl --location --request GET 'http://127.0.0.1:9000/data/file/stat' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--header 'Content-Type: application/json' \
--data '{"path":"/截屏2023-03-23 14.21.47.png"}'
返回:
{
"code": 200,
"message": "OK",
"data": {
"path": "/截屏2023-03-23 14.21.47.png",
"cid": "QmPiRyBa1uQQPu6RzwjWpFnxXc2NaFFoKcrEGRjTALHU35",
"size": 1132590
}
}
上传文件到指定目录
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:form-data
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
files | []file | 文件 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据,该接口为null |
请求:
curl --location 'http://127.0.0.1:9000/data/file' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--form 'files=@"/Users/xuqiang/Documents/截屏2023-03-23 14.21.47.png"' \
--form 'path="/"'
返回:
{
"code": 200,
"message": "OK",
"data": null
}
删除指定的目录
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的绝对路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据,该接口为null |
请求:
curl --location --request DELETE 'http://127.0.0.1:9000/data/dir' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--header 'Content-Type: application/json' \
--data '{"path":"/test-dir"}'
返回:
{
"code": 200,
"message": "OK",
"data": null
}
删除指定文件
参数名称 | 类型 | 描述 |
---|---|---|
AccountAddr | string | 用户的钱包账号地址 |
格式:JSON
参数:
参数名称 | 类型 | 描述 |
---|---|---|
path | string | 指定的文件绝对路径 |
参数名称 | 类型 | 描述 |
---|---|---|
code | int | HTTP状态码 |
message | string | 返回消息 |
data | object | 返回数据,该接口为null |
请求:
curl --location --request DELETE 'http://127.0.0.1:9000/data/file' \
--header 'AccountAddr: 0x10163d42008C943FA23a611D487f71a1d8f82a79' \
--header 'Content-Type: application/json' \
--data '{"path":"/截屏2023-03-23 14.21.47.png"}'
返回:
{
"code": 200,
"message": "OK",
"data": null
}