我正在创建一个具有web界面的文件存储库。用户将能够登录(简单的PHP授权系统)并浏览存储在服务器上的文件。每个目录都有一个名称,它决定了它属于哪个用户。
我正在努力保护整个东西——我不能简单地将所有文件都放到文档根目录中,因为每个人都可以访问它们。所有与此问题相关的答案都表明,所有私有和敏感数据都应该放在文档根之外。
这就是我所做的,但现在我找不到在用户登录时向他显示这些文件的方法。
我应该如何处理这个问题?将它们作为BLOB存储在数据库中是个坏主意,因为每个文件都有1.5G以上的内存。
更新
对于任何与同一问题斗争的人:
我这样做了
Sherif
他在回答中暗示。您需要安装
mod_xsendfile
并添加
XSendFile On
XSendFilePath "/var/www/"
到中的apache配置文件
<Directory>
部分当然,修改路径以满足您的需要。然后创建一个PHP文件来处理请求。下面是一个类似PHP的伪代码示例:
$file = $_GET["file"];
if (user_logged_in() && user_allowed_to_download($file)){
$absoluteFilePath = "/var/www/".$file;
header("X-Sendfile: ".$absoluteFilePath);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$file);
}
然后您可以将其与jwplayer、VLC等一起使用,如下所示:
<div class="embed_vlc_wrapper">
<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2"
width="500"
height="500"
version="VideoLAN.VLCPlugin.2"
target="http://localhost/xsend.php?file=1.mp4"
pluginspage="http://www.videolan.org"
/>
</div>