当前位置: 首页 > ops >正文

11.1.5 实现文件删除,共享和共享下载排行榜

1、图床分享图片api_sharepicture.cc

sharepicture_cgi.c 分享后每个人都可以看到。
数据库:

DROP TABLE IF EXISTS `share_picture_list`;
CREATE TABLE `share_picture_list` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`user` varchar(32) NOT NULL COMMENT '文件所属用户',`filemd5` varchar(256) NOT NULL COMMENT '文件md5',`file_name` varchar(128) DEFAULT NULL COMMENT '文件名字',`urlmd5` varchar(256) NOT NULL COMMENT '图床urlmd5',`key` varchar(8) NOT NULL COMMENT '提取码',`pv` int(11) DEFAULT '1' COMMENT '文件下载量,默认值为1,下载一次加1',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '文件创建时间',PRIMARY KEY (`id`),KEY `idx_user_filemd5` (`user`, `filemd5`),KEY `idx_urlmd5_user` (`urlmd5`, `user`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='图床文件列表';

2、分享/删除文件,更新下载计数api_dealfile.cc

2.1 /api/dealfile?cmd=share分享文件

数据库表单

DROP TABLE IF EXISTS `user_file_list`;
CREATE TABLE `user_file_list` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`user` varchar(32) NOT NULL COMMENT '文件所属用户',`md5` varchar(256) NOT NULL COMMENT '文件md5',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '文件创建时间',`file_name` varchar(128) DEFAULT NULL COMMENT '文件名字',`shared_status` int(11) DEFAULT NULL COMMENT '共享状态, 0为没有共享, 1为共享',`pv` int(11) DEFAULT NULL COMMENT '文件下载量,默认值为0,下载一次加1',PRIMARY KEY (`id`),KEY `idx_user_md5_file_name` (`user`,`md5`, `file_name`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COMMENT='用户文件列表';DROP TABLE IF EXISTS `file_info`;
CREATE TABLE `file_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件序号,自动递增,主键',`md5` varchar(256) NOT NULL COMMENT '文件md5',`file_id` varchar(256) NOT NULL COMMENT '文件id:/group1/M00/00/00/xxx.png',`url` varchar(512) NOT NULL COMMENT '文件url 192.168.52.139:80/group1/M00/00/00/xxx.png',`size` bigint(20) DEFAULT '0' COMMENT '文件大小, 以字节为单位',`type` varchar(32) DEFAULT '' COMMENT '文件类型: png, zip, mp4……',`count` int(11) DEFAULT '0' COMMENT '文件引用计数,默认为1。每增加一个用户拥有此文件,此计数器+1',PRIMARY KEY (`id`), -- UNIQUE KEY `uq_md5` (`md5)KEY `uq_md5` (`md5`(8)) -- 前缀索引
) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8 COMMENT='文件信息表';DROP TABLE IF EXISTS `share_file_list`;
CREATE TABLE `share_file_list` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`user` varchar(32) NOT NULL COMMENT '文件所属用户',`md5` varchar(256) NOT NULL COMMENT '文件md5',`file_name` varchar(128) DEFAULT NULL COMMENT '文件名字',`pv` int(11) DEFAULT '1' COMMENT '文件下载量,默认值为1,下载一次加1',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '文件共享时间',PRIMARY KEY (`id`),key `idx_filename_md5_user` (`file_name`, `md5`, `user`),key `idx_md5_user` (`md5`, `user`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='共享文件列表';

2.1.1请求和应答

请求URL

URLhttp://192.168.1.4/api/dealfile?cmd=share
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
token令牌同上必填
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

3: 别人已经分享此文件

4: token验证失败

2.2 /api/dealfile?cmd=del删除文件

2.2.1 请求和应答

请求URL

URLhttp://192.168.1.4/api/dealfile?cmd=del
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
token令牌同上必填
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

2.3 /api/dealfile?cmd=pv更新文件下载计数

2.3.1 请求和应答

是用来更新指定文件的下载量,每次成功下载一个文件成功后,调用该接口更新对应文件的pv值。

请求URL

URLhttp://192.168.1.4/api/dealfile?cmd=pv
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
token令牌同上必填
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

3 获取共享文件或下载榜api_sharefiles.cc

3.1/api/sharefiles?cmd=count获取共享文件数量

3.1.1 请求和应答

请求URL

URLhttp://192.168.1.4/api/sharefiles?cmd=count
请求方式GET
HTTP版本1.1
Content-Typeapplication/x-www-form-urlencoded

请求参数:无

公共的请求,这里暂时不做token验证,其实也可以做token校验,但目前前端已经写成不带token了。

返回结果参数说明

名称含义规则说明
code结果码

0:正常;

1:失败

total总数量

3.2 /api/sharefiles?cmd=normal获取共享文件列表

3.2.1 请求和应答

请求URL

URLhttp://192.168.1.4/api/sharefiles?cmd=normal
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
count数量必填
start开始位置必填

返回结果参数说明

名称含义规则说明
files文件结果集

"code":0:正常;1:失败

"count": 2, // 分页返回数量,如果为0则不需要解析files

"total": 2, 总的文件数量

"user": 用户名称,

"md5": md5值,

"create_time": 创建时间,

"file_name": 文件名,

"share_status": 共享状态, 0为没有共享, 1为共享

"pv": 文件下载量,下载一次加1

"url": URL,

"size": 文件大小,

"type": 文件类型

4 取消分享/转存/更新下载计数api_dealfile.cc

4.1 api/dealsharefile?cmd=cancel取消分享

4.1.1请求和应答

请求URL

URLhttp://192.168.1.4/api/dealsharefile?cmd=cancel
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

4.2 /api/dealsharefile?cmd=save转存文件

4.2.1请求和应答

请求URL

URLhttp://192.168.1.4/api/dealsharefile?cmd=save
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

5:文件已存在

4.3 /api/dealsharefile?cmd=pv更新共享文件下载计数

4.3.1请求和应答

即是共享文件下载成功后,发该url的请求,该文件下次数量+1.

请求URL

URLhttp://192.168.1.4/api/dealsharefile?cmd=pv
请求方式POST
HTTP版本1.1
Content-Typeapplication/json

请求参数

参数名含义规则说明是否必须缺省值
user用户名称不能超过32个字符必填
md5md5值md5加密后的值必填
filename文件名称不能超过128个字符必填

返回结果参数说明

名称含义规则说明
code结果值

0: 成功

1: 失败

参考链接:0voice · GitHub

http://www.xdnf.cn/news/19245.html

相关文章:

  • 分布式测试平台ITP:让自动化测试更高效、更稳定
  • SW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好
  • 组件通信终极指南:从Props Drilling到Context API
  • react-virtualized React 应用中高效渲染大型列表和表格数据的库
  • 扣子(coze)实践指南进阶篇——创建工作流,并将工作流接入智能体
  • 2025年8月个人工作生活总结
  • [Windows] 某音下载工具——自用
  • Selenium 等待机制:编写稳定可靠的自动化脚本
  • Kubernetes中kubeadm、kubectl、kubelet的区别与作用
  • 动态规划入门(三):一些经典动态规划模型
  • arnold图像加密(猫脸变换)
  • 一个从7zip中分离出来的高压缩比文本压缩工具ppmd
  • 文件系统深度解析:从核心概念到代码实践
  • 【MLLM】多模态理解Ovis2.5模型和训练流程(更新中)
  • 手写MyBatis第43弹:插件拦截原理与四大可拦截对象详解
  • Shell脚本编程入门:从基础语法到流程控制
  • USB4 vs USB3.0:一场接口技术的革命性飞跃
  • 鸿蒙ArkTS 核心篇-14-条件表达式(三目运算符)
  • 如何提高微型导轨的生产效率?
  • 使用 Visio Viewer 查看 Visio 绘图文件
  • 语义分割一站式到底怎么玩?
  • 中级统计师-统计实务-第三章 国民经济核算
  • 智能装备如何与软件结合?
  • MySQL独占间隙锁为什么会互相兼容?
  • 慢SQL优化
  • SQL 学习
  • 以声为剑,绘山河热血——刘洋洋《不惧》8月30日全网上线
  • 逆向思维下,如何把基金投资做亏?
  • 算法 --- 前缀和
  • 一文了解大模型微调