请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

guoqp
金牌服务用户   /  发表于:2022-11-24 21:24  /   查看:97  /  回复:11
10金币
有这么一个需求场景,不知道该如何实现

我要做一个文件下载管理系统,但这里的文件都不对外公开,相当于我给别人的链接都是一次性的或者指定下载次数,超了下载链接就失效了

我尝试用服务器命令中的文件下载功能,发现能拿到链接,是一个filedown后加了个参数,这个链接好像可以反复下载

于是我又想能不能改成直接发文件流,比如服务器直接返回文件流,在超哥的插件中有个返回任意数据里有个数据类型是application/octet-stream,通过这个感觉应该可以实现文件流,但问题来了,我怎么读入我要下载的文件呢?用文件到BASE64?这样客户端下的不就是BASE64加密过的文件了吗,客户端又不能解密怎么办?看了BASE64解密命令,发现只能解密成文本,这也不是我想要的效果啊

有没有什么好的办法来实现?

最佳答案

查看完整内容

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=142682

11 个回复

倒序浏览
最佳答案
最佳答案
豪~豪悬赏达人认证 活字格认证
高级会员   /  发表于:2022-11-24 21:24:07
来自 9#
guoqp 发表于 2022-11-25 10:48
我的理解是不管前边怎么绕,最后都会到下载的那个环节,而活字格的附件下载或者文件下载功能都是使用的File ...

https://gcdn.grapecity.com.cn/fo ... read&tid=142682

评分

参与人数 1金币 +66 收起 理由
Simon.Sun + 66 赞一个!

查看全部评分

回复 使用道具 举报
guoqp
金牌服务用户   /  发表于:2022-11-24 22:21:18
2#
我想如果实在不行还有个办法,就是下载一次对文件重新命名并写表统一管理
或者将文件拷贝到一个路径,下载完成后删除,感觉这个思路也行得通,但效率感觉没那么高,毕竟还要拷贝文件

就想借机学习下如何在服务端命令中进行文件流的返回
回复 使用道具 举报
guoqp
金牌服务用户   /  发表于:2022-11-24 22:23:02
3#
如果有大佬有类似的demo就再好不过了,虽然我也讨厌伸手党,但不得不说有个demo真心方便,效率高。
回复 使用道具 举报
Simon.Sun
超级版主   /  发表于:2022-11-25 09:42:30
4#
可以考虑使用豪神的返回命令,将 Base64 返回成指定格式或者直接下载。



能返回图片后,然后就可以在服务端命令里做下载次数的限制逻辑了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Grayson.Shang活字格认证
超级版主   /  发表于:2022-11-25 09:53:30
5#
大佬您好,关于您说的这种需求,我没有做demo,不过我可以提供一下我的想法,大佬可以参考一下~
需求是给用户一个连接让用户下载,而且下载之后,希望用户不能再下载,
首先,第一个想到的应该就是将下载单元格禁用掉,就可以防止再次下载了,
但是,有一个问题,因为给了链接,那么重新刷新页面好像就又可以正常下载了,所以单从页面上做限制,显然是不够的
那么,就需要在数据库层面进行限制了,比如在发送链接的时候,给后面附加一个参数,然后把这个参数存储到数据库,做标识,若是已下载,标记失效,后面就不可以用了,这样是不是杜绝了链接被二次使用的情况了
而且一般简单的参数会容易被修改,建议这里的参数使用比较复杂的,比如GUID,或者加密后的字符串

总结一下:
1. 创建一张数据表,记录文件下载情况,每要给用户一次链接下载某一个文件的时候,先生成一个字符串,存储到表里,然后发送的连接拼接上这个字符串
2. 在页面上判断,当前链接的参数,是否已在数据库存在,是否未失效,然后根据结果,使用条件格式设置是否可以下载
3. 下载完,记得将失效更新到数据库中
回复 使用道具 举报
guoqp
金牌服务用户   /  发表于:2022-11-25 10:44:21
6#
Simon.Sun 发表于 2022-11-25 09:42
可以考虑使用豪神的返回命令,将 Base64 返回成指定格式或者直接下载。



测试不能下载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
guoqp
金牌服务用户   /  发表于:2022-11-25 10:48:50
7#
Grayson.Shang 发表于 2022-11-25 09:53
大佬您好,关于您说的这种需求,我没有做demo,不过我可以提供一下我的想法,大佬可以参考一下~
需求是给 ...

我的理解是不管前边怎么绕,最后都会到下载的那个环节,而活字格的附件下载或者文件下载功能都是使用的FileDownloadUpload/Download?file=


只要用户直接复制这个链接就能绕过前边的一堆限制,直接拿到文件,所以我才想从返回文件流入手,这样才能从本质上解决问题
回复 使用道具 举报
豪~豪悬赏达人认证 活字格认证
高级会员   /  发表于:2022-11-25 10:54:45
8#

GET 访问连接才行,POST访问肯定是不会跳转下载的
回复 使用道具 举报
guoqp
金牌服务用户   /  发表于:2022-11-25 10:58:30
10#
豪~豪 发表于 2022-11-25 10:54
GET 访问连接才行,POST访问肯定是不会跳转下载的

我试试
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册