如何创建(可配置)数量的临时下载链接

时间:2015-05-22 05:56:58

标签: php mysql

我正在创建一个只能工作10次的下载链接。所以我有2个选项。

  • 下载文件并将其计数更新为数据库并删除文件 当数是10时。
  • 或下载文件并重命名为filename-1, filename-2 ....... filename-10 ..最后在它到达时将其删除 文件名10。

我猜第二个选项使用较少的资源来不调用database.Now找到文件名的简单方法是什么。例如:

我的所有文件名都是独一无二的,例如 sadkjsah78876djhgsadj.jpg 。所以,当我更新计数时,它会像

sadkjsah78876djhgsadj-1.jpg
(or)
sadkjsah78876djhgsadj-8.jpg

那么如何在目录中找到基于sadkjsah78876djhgsadj的文件名。我正在考虑循环。但是当我将下载限制设置为100时,我不认为这是最好的方法。

1 个答案:

答案 0 :(得分:1)

最佳选择是使用.htaccessmod_rewite将某个目录的调用重写为PHP文件。例如任何对/downloads/FILEHASH.jpg的调用都会被重写为/download.php?file=FILEHASH

然后download.php将检查FILEHASH是否与数据库中的行匹配,并且dl计数是否在x之下,如果是,则会增加dl计数,设置响应代码为200,内容类型为image/jpeg并触发图像数据(存储在文件系统中或来自数据库中的BLOB)。

如果未找到或者dl计数超过x,它会将响应代码设置为404(或者更合适的话,如果您愿意)并且不返回任何内容或者可能是有用的消息。根据文件的大小,您可能还应该从数据库中删除该行,并在此时取消文件与文件系统的链接。

如果你使用MVC框架,这种事情真的很简单。

如果您提供的不仅仅是图像,请确保在添加时获取上传的mime类型,将其保存在数据库中并在下载时将其作为内容类型提供。