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
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