我正在开发一个项目,用户可以购买媒体文件。 付款处理后,我想让他们下载文件。 我想可以肯定地说我应该有一个临时链接到这些文件。一个链接到用户的IP,可能还有一个时间戳? 问题是我不知道从哪里开始。首先是 。这是做到这一点的方法吗?如果是这样..我怎么继续使用PHP。 (我想我不需要确切的脚本只是提示如何做到这一点,虽然如果有一个现有的脚本,我不介意) 谢谢。使用php下载临时链接文件
2
A
回答
6
既然你要处理在PHP中,你可能会藏汉使用登录来检查该文件,如果用户购买了文件,除此之外,代码应该有点像这样:
header('Content-Type: application/force-download');
$file = new File(intval($_GET['id']));
$fileLocation = dirname(__FILE__) . "/../../upload/fileArchive/" . $file->id . "." . $file->type;
header('Content-Length:' . filesize($fileLocation));
header("Content-Disposition: inline; filename=\"".$file->name."\"");
$filePointer = fopen($fileLocation,"rb");
fpassthru($filePointer);
采取从生产和测试
2
我不会绑定到IP的临时链接,它不是非常人性化的解决方案。
存储在例如表所购买的媒体:
- 介质ID(这是指在媒体详细描述的另一个表)
- 唯一令牌(这将identificate购买者除外)
- 客户端ID
- 总下载量(也许你想使下载5次)
- 令牌到期(如果你想限制这一访问)
下载url必须包含唯一令牌和一些其他数据(用户的散列电子邮件等),以使url更独特和更安全。
样品网址:http://example.com/purchase/nc9o32ocrn8of4nv348/989934ov9344b
首先哈希持有购买本身,而第二个标识用户。成功识别您可以像Kristoffer said这样的文件。
0
header('Content-Type: application/force-download');
$filee = "r.txt";
$fileLocation = dirname(__file__).'/the_sub_folder_for_file/'.$filee;
header('Content-Length:' . filesize($fileLocation));
header("Content-Disposition: inline; filename=\"".$filee."\"");
$filePointer = fopen($fileLocation,"rb");
fpassthru($filePointer);
相关问题
- 1. 与ASP.NET临时文件下载链接
- 2. 创建临时链接供下载
- 3. 将临时下载链接(URL)转换为永久链接
- 4. django使用链接下载csv文件
- 5. 使用LMDWebHTTPGet文件下载到Internet临时文件目录仅
- 6. 下载文件时的临时消息
- 7. 使用PHP创建.jpg文件的下载链接
- 8. Python:从使用php实现的链接下载文件
- 9. 如何使用PHP为文件创建下载链接?
- 10. 使用符号链接下载PHP文件
- 11. 从链接下载文件
- 12. Dropbox - 获取文件的临时链接
- 13. 如何下载临时文件
- 14. 使用php下载文件
- 15. 使用PHP下载文件
- 16. 使用php下载文件
- 17. 使用PHP下载文件
- 18. 直接下载链接到OneDrive文件?
- 19. php ftp_nlist可下载链接
- 20. php隐藏下载链接
- 21. 如何使用mod_perl和CGI :: Application提供临时文件下载?
- 22. PHP:下载PDF文件,而无需直接链接
- 23. 通过使用QNetworkAcessManager的直接链接下载文件
- 24. 通过加密链接下载文件时损坏的文件
- 25. 使用PHP下载文件 - 一次只下载一个文件!
- 26. Python下载文件时没有机械化的直接链接
- 27. 下载从链接Excel文件在python
- 28. 链接到Silverlight下载文件。
- 29. Android-从链接错误下载文件
- 30. azure下载订阅文件链接
下载页面本身怎么样。我不确定如何设置它,以便隐藏文件的位置。请您详细说明这一部分? 谢谢 – salmane 2010-08-26 13:35:19