# simpleFileServer **Repository Path**: langbiantianya/simple-file-server ## Basic Information - **Project Name**: simpleFileServer - **Description**: 简单的webdav服务与简单的web文件管理 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-15 - **Last Updated**: 2024-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # simpleFileServer ## 简介 ### 起步 这个项目只是我熟悉golang过程中的产物 启动后会通过环境变量WORK_HOME获取工作目录;PASSWD获取管理员密码;ROOT_USER获取管理员用户名; 如果这些都没有指定默认值如下 WORK_HOME:./ PASSWD:123456 ROOT_USER:root ### 构建指北 先确保构建环境安装了goreleaser与make(这个不是必须的) 然后运行`goreleaser release --skip=publish --clean`或者`make goreleaser-snapshot` docker 镜像构建请参考Makefile中的指令 ### webdav 这块的思路来源是[fungaren/gin-webdav: WebDAV server for gin-gonic (github.com)](https://github.com/fungaren/gin-webdav) 感谢大佬提供的方案 webdav的路径是 `http://127.0.0.1:8080/webdav` ~~可以使用windows的资源管理器访问~~ (由于windows默认只支持https的webdav身份认证,所有有需要请自行修改注册表来支持) 推荐使用[https://www.raidrive.com/]() 这个软件连接 ## 相关接口 ### 获取文件夹或文件二进制流 ```shell curl --location '127.0.0.1:8080/api/你的实际文件路径' ``` 如果请求的路径是文件夹会返回json,如果是文件会返回二进制流 ```json { "Data": { "RootPath": "./", "Parent": "./下载/", "NowPath": "./下载/02_SourceHanSerif-VF", "FileItems": [ { "Name": "LICENSE.txt", "Size": 4463, "Mode": 438, "ModTime": "2023-08-17T08:53:16+08:00", "IsDir": false }, { "Name": "Variable", "Size": 0, "Mode": 2147484159, "ModTime": "2023-08-18T11:09:20+08:00", "IsDir": true } ] } } ``` ### 上传文件与创建文件夹 ```shell curl --location '127.0.0.1:8080/api/需要创建文件或文件夹的夫级路径' \ --form 'path="新建文件夹2"' \ --form 'file=@"/D:/FFOutput/66.bmp"' ``` 返回值为文件列表 ```json { "Data": { "RootPath": "/tmp/test/", "Parent": "/tmp/", "NowPath": "/tmp/test/", "FileItems": [ { "Name": "新建文件夹1", "Size": 60, "Mode": 2147484141, "ModTime": "2023-12-21T01:13:13.237728674+08:00", "IsDir": true }, { "Name": "新建文件夹2", "Size": 40, "Mode": 2147484141, "ModTime": "2023-12-20T22:58:22.495875604+08:00", "IsDir": true }, { "Name": "66.bmp", "Size": 1314430, "Mode": 420, "ModTime": "2023-12-21T16:37:26.877759761+08:00", "IsDir": false } ] } } ``` ### 删除文件或文件夹 `cm9vdDoxMjM0NTY3`这个东西其实就是`root:1234567`这个字符串用base64加密后得到的 ```shell curl --location --request DELETE '127.0.0.1:8080/api/需要删除的文件路径' \ --header 'Authorization: Basic cm9vdDoxMjM0NTY3' ``` 返回值也是json ```json { "Data": "ok" } ``` ## TODO - [x] docker镜像构建 - [ ] web的前端页面 - [ ] 用户权限管理 - [ ] 读写改删权限分离 - [ ] 配置文件剥离