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

发布于:2025-09-02 ⋅ 阅读:(19) ⋅ 点赞:(0)

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

URL http://192.168.1.4/api/dealfile?cmd=share
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

3: 别人已经分享此文件

4: token验证失败

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

2.2.1 请求和应答

请求URL

URL http://192.168.1.4/api/dealfile?cmd=del
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

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

2.3.1 请求和应答

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

请求URL

URL http://192.168.1.4/api/dealfile?cmd=pv
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

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

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

3.1.1 请求和应答

请求URL

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

请求参数:无

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

返回结果参数说明

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

0:正常;

1:失败

total 总数量

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

3.2.1 请求和应答

请求URL

URL http://192.168.1.4/api/sharefiles?cmd=normal
请求方式 POST
HTTP版本 1.1
Content-Type application/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

URL http://192.168.1.4/api/dealsharefile?cmd=cancel
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

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

4.2.1请求和应答

请求URL

URL http://192.168.1.4/api/dealsharefile?cmd=save
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

5:文件已存在

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

4.3.1请求和应答

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

请求URL

URL http://192.168.1.4/api/dealsharefile?cmd=pv
请求方式 POST
HTTP版本 1.1
Content-Type application/json

请求参数

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

返回结果参数说明

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

0: 成功

1: 失败

参考链接:0voice · GitHub


网站公告

今日签到

点亮在社区的每一天
去签到