我尝试创建用户可以购买视频/音频文件的商店。这些文件将放在另一台远程服务器(Debian)上。我无法弄清楚如何只为特定用户下载。我可以通过IP以某种方式计算控制和,链接将是这样的:
http://100.000.000.000/files/video.avi?hash=87a686d86d8868a6868a
但是如何在远程服务器上检查这个?我不知道用PHP脚本阅读整个电影文件是个好主意。
答案 0 :(得分:1)
基本上有两种方法可行。
文件系统:
您可以使用文件系统,为每个用户创建受密码保护的文件夹,并将所有文件复制到其中,或者更好,如果您使用Linux,请使用符号链接(ln -s)。
<强> PHP:强>
或者您可以在检查访问权限时通过PHP流式传输文件。我认为这不是一个真正的问题。如果只是推送原始数据,PHP不需要做太多。
$total = filesize($filepath);
$blocksize = (2 << 20); //2M chunks
$sent = 0;
$handle = fopen($filepath, "r");
// Push headers that tell what kind of file is coming down the pike
header('Content-type: '.$content_type);
header('Content-Disposition: attachment; filename='.$filename);
header('Content-length: '.$filesize*1024);
// Now we need to loop through the file and echo out chunks of file data
// Dumping the whole file fails at > 30M!
while($sent < $total) {
echo fread($handle, $blocksize);
$sent += $blocksize;
}
(代码很短,没有错误检查,没有密码检查,没有文件关闭等)
这取决于您拥有的密码系统类型以及您在服务器上可以执行的操作。