结合linux命令风格定义一套网盘接口文档,不考虑实现,纯属娱乐 接口一:列举文件夹(默认只显示文件名/所有文件/全部显示/按文件名排序) ls /dir option="-a" grep=. sed="-n 'p'"" sort="filename" option="-l" grep="-v ^d" sed="-n '9,10p'" sort="createtime" grep=^d sort="size" { { "name" : "a.jpg", "type" : "file", "size" : 1024 "create_time" : "2013-04-25 14:49:55", "modify_time" : "2013-04-25 14:49:55" } ... } 错误情况:文件夹不存在 { "error" : "ls failed" } 示例:GET /?method=ls&dir=urlencode("/dir")&option=urlencode("-l")&grep=urlencode("^d")&sed=urlencode("9,10p")&sort=urlencode("filename") 接口二:查看指定文件信息 stat /photo/a.jpg { "name" : "a.jpg", "size" : 1024, "create_time" : "2013-04-25 14:49:55", "modify_time" : "2013-04-25 14:49:55" } 错误情况:文件不存在 { "error" : "stat failed" } 示例:GET /photo/a.jpg?method=stat 接口三:拷贝文件/文件夹(默认不强制),如果b文件所在路径不存在,递归创建文件夹 cp a b option="-f" { "msg" : "copy ok" } 错误情况:a文件(文件夹)不存在/b文件存在(需添加强制选项) { "error" : "copy failed" } 示例:GET /?method=cp&src=a&des=b&option=urlencode("-f") 接口四:重命名文件/文件夹(强制覆盖),如果b文件所在路径不存在,递归创建文件夹 mv a b { "msg" : "rename ok" } 错误情况:a文件(文件夹)不存在 { "error" : "rename failed" } 示例:GET /?method=mv&src=a&des=b 接口五:同步接口 rsync a b 示例:POST /?method=rsync&src=a&des=b 表单包含a文件的分片信息及md5值(确定同步分片时用) 正文包含a文件需要同步的分片,类似多个文件上传(正式同步时用) 返回 { {需要同步分片一区段} {需要同步分片二区段} } 如果文件已同步完毕或不需要同步 { "msg" : "rsync ok" } 错误情况: a文件(文件夹)不存在/b路径错误或远端不可达 接口六:改变路径 cd a { "msg" : "ch ok" } 错误情况:a目录不存在 { "error" : "cd failed" } 示例:GET /dir/subdir/?method=cd&des=a 接口七:查看当前路径 pwd { "/a" } 示例:GET /?method=pwd 接口八:上传单个文件 put /dir/subdir/a 上传文件内容 返回 { "msg" : "put ok" } 错误情况:文件不存在,传输过程出现错误 { "error" : "put failed" } 示例:PUT /dir/subdir/a 接口九:下载文件 get /dir/subdir/a 返回文件内容 示例:GET /dir/subdir/a 接口十:预览图片(文档,视频)不作为下载 more /dir/subdir/a.jpg 返回文件内容 示例:GET /dir/subdir/a.jpg?method=more