gmfs分布式文件服务

联合创作 · 2023-10-01 04:45

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      上传文件后缀


演示 demo 地址:http://localhost:1323/demo.html


(1)、POST 上传


地址:/upload.html


参数:file       文件属性名


参数:nude       可选(检查是否涉黄 true 是, false 否)


参数:online     可选(全局允许上线 online 为 false 不允许上线才生效,true 是, false 否)


参数:resetId    可选(resetId 与 resetRdm 同时存在,替换指定图片)


参数:resetRdm   可选(resetId 与 resetRdm 同时存在,替换指定图片)


演示地址:http://localhost:1323/upload.html


返回 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 同时存在,替换指定图片)


演示地址:http://localhost:1323/proxy.html?uri=http://p5.qhimg.com/dmt/490_350_/t01d49b7191cbc97c11.jpg


返回 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 否)


演示地址:http://localhost:1323/dispaly/55c83f2a07986a0838000003.html


图片缩放处理


1、等比缩放 100 像素


http://localhost:1323/dispaly/55c83f2a07986a0838000003_100.html


2、缩放为 100x100 像素


http://localhost:1323/dispaly/55c83f2a07986a0838000003_100x100.html


注意!限制宽高大于 50 像素, 宽高小于2倍的实际像素。


(4)、文件下载


地址:/download/:id.html?name=xx


参数:id         唯一ID(上传成功 message 返回的字符串)


参数:name       可选(文件名称,默认使用 id 命名)


演示地址:http://localhost:1323/download/55c83f2a07986a0838000003.html



    http://localhost:1323/download/55c83f2a07986a0838000003.html?name=20150806

(5)、秒传(查询是否存在)


地址:/search/:md5/:size.html


参数:md5    文件 md5 值


参数:size   文件大小(单位 B 字节)


演示地址:http://localhost:1323/search/3fbef3c587cf53c88b282b614cad105f/34562.html



{
    "code": "1000",
    "message": "55c83f2a07986a0838000003",
    "mime": "image/jpeg",
    "rdm": "L5Ap4",
    "suffix": ".jpg"}

(6)、文件转正(开启文件失效功能,才需要转正)


地址:/online/:id/:rdm.html


参数:id     唯一ID


参数:rdm    随机数


演示地址:http://localhost:1323/online/55c83f2a07986a0838000003/L5Ap4.html



{
    "code": "1001",
    "message": true}

Futures


1、欢迎提出更好的意见,帮助完善 gmfs

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报