首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在PHP中创建动态下载链接

如何在PHP中创建动态下载链接
EN

Stack Overflow用户
提问于 2012-03-15 17:02:18
回答 5查看 4.2K关注 0票数 4

有没有办法在PHP中为单个文件创建一个动态下载链接一段时间,或者下载链接在这段时间之后过期。在此之后,下载链接会发生变化。

实际上,我有一个要求,下载链接应该是通过一个特定的电子邮件才能访问。我无法将该文件作为附件添加,因为它太大了。

有人能在这方面帮我吗。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-15 17:09:01

一种解决方案:

  1. 创建一个数据库表,该表存储一个大型的唯一ID (随机)和要下载的文件的名称/位置/内容。还包括到期日期。

id | filename | expires ----------------------+--------------------+-------------------- fsdhfs7dfsniuf92un3f2 | secret.doc | 2012-03-23 23:32:32 sdf8shdf829nf32ufn23f | secret2.doc | 2012-03-13 23:32:33

  • 通过电子邮件将链接发送给您的最终用户...链接应该类似于:

http://yoursie.com/download/fsdhfs7dfsniuf92un3f2

  • Use一个apache重写规则(mod_rewrite),它将捕获漂亮的链接并将其传递给一个PHP页面:

在RewriteRule ^/ RewriteEngine /(a-z0-9{20})$ /download.php?id=$1

  • In上下载脚本download.php,查看$_GET['id']。运行数据库查询以查找记录。检查过期日期。如果一切正常,那么proceed.

  • Either使用PHP脚本输出正确的头文件并下载文件,或者向nginx这样的前端代理发送内部重定向,这会将下载过程卸载到nginx,而不会占用PHP的下载空间。

无论哪种方式,您都有一个安全的、可过期的链接,可以发送给您的最终用户。

保重!

票数 7
EN

Stack Overflow用户

发布于 2012-03-15 17:07:22

当然,将文件的路径、唯一标识符和过期时间戳一起存储在数据库中。然后,当用户访问get变量中具有唯一ID的链接时,检查时间戳并相应地获取文件/显示错误。

票数 2
EN

Stack Overflow用户

发布于 2012-03-15 17:08:34

数据库表:

id文件(在可公开访问的路径之外)过期

然后有一个脚本get-file.php?id=XXXXXX

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?not-real-code
Delete everything expired from table

Look up record for id=XXXXXXX

If exists then use something like readfile() to read and output file

Delete record in table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9724584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文