基于golang http包实现的文件服务器
2017-11-22 15:59
363 查看
基于golang http包实现的文件服务器
代码仓库:https://github.com/danny-wang/repo
基本功能
压缩模式或正常上传压缩模式或正常下载
获取文件服务器状态,包括服务器域名(name:port),当前有多少文件等
获取某一文件的状态(创建时间,下载路径,超时过期时间,MD5)
获取某一个文档中的所有文件的状态(可指定是否递归进入子文档,是否只匹配某一个后缀的文件)
删除过期文件
备份数据库
使用方式
方式一:直接使用curl命令调用:
上传文件:
普通模式上传:上传文件和服务器中的文件一致curl -F "file=@bolt" -F dest=/jianwang/bolt.txt -F expiredTime=2h -F replaceIfExist=false "http://localhost:50010/r/upload/"
返回值:
{"Status":0,"Msg":"file exist","File":{"CreateTime":"0001-01-01T00:00:00Z","Md5":"","ExpiredTime":"0001-01-01T00:00:00Z"}}
压缩模式上传:对于上传的文件会使用gunzip解压缩,然后存储到文件服务器中。假设被上传的文件是使用gzip压缩后的压缩文件。
curl -H "Content-Encoding: gzip" -F "file=@1.png.gz" -F dest=/jianwang/3.png -F expiredTime=2h -F replaceIfExist=false "http://localhost:50010/r/upload/"
返回值:
{"Status":0,"Msg":"OK","File":{"CreateTime":"2017-11-22T15:43:08.397174566+08:00","Md5":"e16b119e535c5ebbe8b59ef766335f1c","ExpiredTime":"2017-11-22T17:43:08.397178023+08:00","DownloadPath":"http://localhost:50010/r/download/jianwang/3.png"}}
下载文件
Normal download: 正常下载,服务器不会压缩数据进行传输 curl -O http://localhost:50010/r/download_file/jianwang/ads.111 Gzip compress mode to download: 指定服务器可以以压缩方式传输文件,客户自己负责解压与否 curl -H "Accept-Encoding: gzip" http://localhost:50010/r/download_file/jianwang/ads.111 | gunzip >a.dmg
其他请求可以直接阅读repo.go中的注释
方式二:客户端代码调用
参考repo/client/test.go中的代码方式三:通过网页
直接访问 http://localhost:50010/r/list/,即可查看数据库中的文件主要技术
使用boltdb文件数据库存储数据库中文件的元信息以json格式传输调用的返回值
使用协程定期删除过期的文件
存储文件的MD5码来方便的比较服务器中的文件是否与本地一致
使用glide包管理工具来管理依赖包
相关文章推荐
- Android开发 基于HttpComponent4.3.3实现文件上传至tomcat服务器(基于struts框架)
- 基于HTTP、NIO、单线程实现浏览器并发非阻塞访问服务器文件
- Golang+Android基于HttpURLConnection实现的文件上传功能示例
- c#实现 ftp http共享方式下载文件 并对比本地文件和服务器文件的更新时间 判断性下载
- 构建基于Nginx的文件服务器思路与实现
- golang实现http静态资源服务器
- 基于http或 TCP实现文件上传-科卓培训
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)
- 基于Python SimpleHTTPServer.py的修改脚本:HTTP文件服务器,修正中文目录列表,支持视频文件在线播放
- 基于HttpClient访问服务器以及上传文件
- 基于Java实现简单Http服务器之一
- go语言实现一个最简单的http文件服务器实例
- 基于PIC实现HTTP的服务器
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
- 用C#实现一个基于http的文件发布程序
- 利用socket自己实现基于HTTP协议的Web服务器
- Python实现基于HTTP文件传输实例
- 构建基于Nginx的文件服务器思路与实现 - 宋黎晓的博客 - OECP社区
- c#实现 ftp ;http;共享方式下载文件 并对比本地文件和服务器文件的更新时间 判断性下载
- 通过设置http的头信息实现服务器不保存文件直接下载