V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
v2hub
V2EX  ›  问与答

不爆露文件路径的情况下如何低成本提供下载

  •  
  •   v2hub · 2019-07-17 20:32:25 +08:00 · 1743 次点击
    这是一个创建于 1947 天前的主题,其中的信息可能已经有所发展或是发生改变。

    描述:
    对外只提供 /down.php?k=abc.exe&token=abcdefg
    其中 abc.exe 是要下载的文件,后台会存储对应的文件路径。
    token 是本次下载的验证,一直在变的。

    文件存储再良心云的 cos 上,目前的方法是,用户访问 /down.php?k=abc.exe&token=abcdefg 的时候,服务器上从 cos 上读取这个文件并输出到用户浏览器中,提供下载。但是这样服务器的流量费和 cos 的流量费都要交,而且下载大文件的时候还影响了网站的速度,文件读取然后再输出到浏览器中消耗了 cpu 和内存。

    如何再能够保护文件真实路径的情况下,更低成本的解决这个下载的问题?

    7 条回复    2019-07-18 11:40:14 +08:00
    oovveeaarr
        1
    oovveeaarr  
       2019-07-17 20:35:48 +08:00   ❤️ 1
    这个上有效期的防盗链不就可以解决了
    zacharyjia
        2
    zacharyjia  
       2019-07-17 20:40:53 +08:00 via iPhone   ❤️ 1
    oss 用私有 bucket,然后像楼上说的,每次用户访问你的 download.php 的时候,生成一个带有效期和签名的 oss 访问 url,直接跳转过去就行
    dobelee
        3
    dobelee  
       2019-07-17 20:44:58 +08:00 via Android   ❤️ 1
    1. 想保护真实路径就得做文件路径映射。
    2. 读取文件输出时少一点缓冲区节约内存。
    3. 文件下载不存在低成本。
    shiny
        4
    shiny  
       2019-07-17 20:51:26 +08:00   ❤️ 1
    1. cos 走内网,不需要流量费
    2. Nginx Sendfile 可以节省下载文件时的 CPU 和内存资源
    3. 更成熟的方案就是 CDN URL 鉴权,可以解决服务器带宽占用问题。PHP 计算出鉴权信息,追加在 CDN URL 尾部,一段时间后过期。
    oreoiot
        5
    oreoiot  
       2019-07-18 07:40:43 +08:00 via iPhone
    谢谢辣鸡下载站,直接丢一个网盘链接??🤪🤪🤪
    edgnoz
        6
    edgnoz  
       2019-07-18 10:27:03 +08:00
    网盘啊
    用 mega
    速度还不错
    v2hub
        7
    v2hub  
    OP
       2019-07-18 11:40:14 +08:00
    @oovveeaarr
    @zacharyjia
    我研究一下去

    @dobelee
    @shiny
    谢谢

    @oreoiot
    @edgnoz
    面向企业级的数据,不可能用第三方网盘的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:18 · PVG 06:18 · LAX 14:18 · JFK 17:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.