Espressif File Server

用于乐鑫的文件服务器,使用 http rpc 协议实现文件服务器

API

rpc api 设计,同时尽量兼容 Linux 文件和目录的模型

依赖

需要 Python2 / Python3,Flask 支持,运行于 Linux 主流发行版本

使用 virtualenv,配置 Python3

$ pip install virtualenv

$ cd ~/web/flaskapp
$ virtualenv -p python3 ./venv3
$ source ./venv3/bin/activate
$ pip install Flask
$ pip install flask-sqlalchemy

运行

> pip install flask
> export FLASK_APP=fileserver.py
> export FLASK_DEBUG=1
> flask run

错误信息

错误信息等同于 http status code: 400/404/500

API 列表

读取指定路径 [GET]

读取指定路径,等同于命令行 > ls path

curl /ls?path=

获取文件内容 [GET]

获取文件的内容,等同于命令行 > cat file

curl /cat?path=

推送文件 [POST]

curl -F path=/a/b/c -F attr={...} -F file=@file-path /touch

使用 form-data 的方式提交文件

查询文件 [GET]

curl /locate?country=

Example

  1. 推送当前文件 t.py 到服务器,目标路径 /aa/bb/t.py,属性是 {"aa":"bb"}
> curl -F 'attr={"country": "china", "aa":"bb"}' -F file=@t.py -F path=/aa/bb/t.py  http://127.0.0.1:5000/touch
  1. 下载文件 /aa/bb/t.py
> curl http://127.0.0.1:5000/cat?path=/aa/bb/t.py
  1. 列出文件属性
> curl http://127.0.0.1:5000/ls?path=/aa/bb/t.py
  1. 列出目录,注意,目录是 "/" 结尾
> curl http://127.0.0.1:5000/ls?path=/aa/bb
  1. 查询文件,目前暂时只支持 country
> curl http://127.0.0.1:5000/locate // 所有文件
> curl http://127.0.0.1:5000/locate?country=china // 带有查询条件的文件