我正在做一个人们可以上传文件的网站。文件可以是公共访问的,也可以是私人访问的。为了避免编码问题,我将具有随机名称的文件存储在“隐藏”目录中。但是,如果我们知道 url,则可以直接访问 public 文件夹。(这不是问题)。
我的公共部分没问题,我的 php 脚本给用户一个如下所示的 url:
http ://example.com/d/1/524dd711c3102/b1bi.png
和 apache 控制访问:
RewriteRule ^d/(\d+)/([a-zA-Z0-9]+)/(.+)$ ./files/public/$1/$2 [L]
到目前为止,一切都很好。
但现在,棘手的部分是私人文件。我需要只有上传文件的用户才能访问该文件。我想避免使用一些 readfile 或file_get_contents
类似这样的东西的基于 PHP 的解决方案。
事实上,我会想象这样的事情:
用户尝试访问./files/private/< folder_id>/< file_id>
和 Apache “询问” PHP 文件是否正常。
问题是,我不认为这是可能的。
所以 :
- 可能吗?如果是这样,如何?
- 你能想出更好的解决方案吗?(我想使用标准的 Apache/http 身份验证,但限制每个用户的访问会很棘手。
(我也可以使用 XSendFile,但我希望用户能够阅读/观看网站上的文件而无需下载(例如图片))
谢谢 :)