脚本宝典收集整理的这篇文章主要介绍了如何让拥有所需权限的用户通过php下载文件?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
header('Content-Description: File transfer'); header('Content-tyPE: application/octet-stream'); header("Content-disposITion: attachment; filename=\"".$public_filename."\""); header("Content-transfer-encoding: Binary"); header('Expires: 0'); header('Cache-Control: must-revalidate,post-check=0,PRe-check=0'); header('Pragma: public'); header("Content-length: ".$f_filesize); reaDFile($file_path);
大多数文件都相当大…… 400mb-10GB.
什么是一个很好的方法来做到这一点,并保持真正的位置文件名的秘密,所以人们不能直接链接到文件,但有必要通过我的download.PHP?file = ID网守链接?
谢谢
编辑:我不是问如何进行用户身份验证,所有这一切都已完成.我只是问我的做法,是一个大规模的好主意.如果我继续阅读10GB文件,它似乎可能会导致内存问题.
这实际上归结为您需要它的安全性.想到的最简单的解决方案(但远非最安全的)是使用具有链接到原始文件的长随机名称的符号链接.一段时间后,符号链接将过期并被删除.每个用户都将自己的符号链接(或“令牌”)添加到他们正在下载的文件中.我不确定它在Windows环境中是如何发挥作用的,但是在unix上它无论如何都相当简单.
这是一些伪代码:
if($user->isAllowedToDownload($file)){ $token = md5($user->name . $file->name . time() . $someGoodRandomValue); syMLink($file,$download_path . $token); header("Location: $download_url$token"); }
然后你需要一个清除旧符号链接的cron作业.您还需要确保将Web服务器设置为遵循符号链接,最好仅限于创建这些下载令牌的文件夹.
因此,当用户可能请求domain.COM/download?file=Bigfile.mp4时,会在Web服务器公共空间中创建一个符号链接,该链接指向Web服务器公共空间之外的真实文件.用户可能会被重定向到domain.com/getFile/ab739babec890103bdbca72,这反过来会导致Web服务器为该文件提供服务.现在,用户很难尝试猜测文件的URL是什么,这就是“安全性”.
以上是脚本宝典为你收集整理的如何让拥有所需权限的用户通过php下载文件?全部内容,希望文章能够帮你解决如何让拥有所需权限的用户通过php下载文件?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。