golang 基于 gridFs 的分布式文件服务。
支持:
1、POST GET 上传
2、图片大小控制
3、文件下载,秒传,转正处理
等
golang 基于 gridFs 的分布式文件服务
Window 启动 mongodb 命令:mongod.exe --dbpath "C:\Program Files\MongoDB\data"
giraffe 启动:go run giraffe start
api 说明code 响应编码
1000 正常消息
1001 异常消息
1002 保存失败
1003 读取失败
1004 超过限制大小,默认小于80M
1005 图片涉黄
1006 不支持文件
message 响应内容
1、code 为 1000 正常消息,时 message 为响应结果
2、其他情况为错误描述
rdm 随机数(重置图片使用)
mime 文件展类型,例如 "image/jpeg" , "application/pdf" 等
suffix 上传文件后缀
(1)、POST 上传
地址:/upload.html
参数:file 文件属性名
参数:nude 可选(检查是否涉黄 true 是, false 否)
参数:online 可选(全局允许上线 online 为 false 不允许上线才生效,true 是, false 否)
参数:resetId 可选(resetId 与 resetRdm 同时存在,替换指定图片)
参数:resetRdm 可选(resetId 与 resetRdm 同时存在,替换指定图片)
返回 JSON 例如:
{ "code": "1000", "message": "55c83f2a07986a0838000003", "mime": "image/jpeg", "rdm": "L5Ap4", "suffix": ".jpg"}
(2)、GET 上传
地址:/proxy.html
参数:uri 文件地址
参数:nude 可选(检查是否涉黄 true 是, false 否)
参数:online 可选(全局允许上线 online 为 false 不允许上线才生效,true 是, false 否)
参数:resetId 可选(resetId 与 resetRdm 同时存在,替换指定图片)
参数:resetRdm 可选(resetId 与 resetRdm 同时存在,替换指定图片)
返回 JSON 例如:
{ "code": "1000", "message": "55c83f2a07986a0838000003", "mime": "image/jpeg", "rdm": "L5Ap4", "suffix": ".jpg"}
(3)、显示(原样输出 byte 流)
地址:dispaly/:id.html?watermark=true
参数:id 唯一ID(上传成功 message 返回的字符串)
参数:watermark 可选(只对图片有效,全局设置不开启水印,请求可通过该参数打开水印 true 是, false 否)
图片缩放处理
1、等比缩放 100 像素
2、缩放为 100x100 像素
注意!限制宽高大于 50 像素, 宽高小于2倍的实际像素。
(4)、文件下载
地址:/download/:id.html?name=xx
参数:id 唯一ID(上传成功 message 返回的字符串)
参数:name 可选(文件名称,默认使用 id 命名)
http://localhost:1323/download/55c83f2a07986a0838000003.html?name=20150806(5)、秒传(查询是否存在)
地址:/search/:md5/:size.html
参数:md5 文件 md5 值
参数:size 文件大小(单位 B 字节)
{ "code": "1000", "message": "55c83f2a07986a0838000003", "mime": "image/jpeg", "rdm": "L5Ap4", "suffix": ".jpg"}
(6)、文件转正(开启文件失效功能,才需要转正)
地址:/online/:id/:rdm.html
参数:id 唯一ID
参数:rdm 随机数
{ "code": "1001", "message": true}
Futures
1、欢迎提出更好的意见,帮助完善 gmfs