创建指向实际文件的符号链接并将下载链接指向符号链接。然后,当用户单击 DL 链接时,他们将从真实文件中下载文件,但从符号链接中命名。创建符号链接需要几毫秒,这比尝试将文件复制到新名称并从那里下载要好。
例如:
<?php
// validation code here
$realFile = "Hidden_Zip_File.zip";
$id = "UserID1234";
if ($_COOKIE['authvalid'] == "true") {
$newFile = sprintf("myzipfile_%s.zip", $id); //creates: myzipfile_UserID1234.zip
system(sprintf('ln -s %s %s', $realFile, $newFile), $retval);
if ($retval != 0) {
die("Error getting download file.");
}
$dlLink = "/downloads/hiddenfiles/".$newFile;
}
// rest of code
?>
<a href="<?php echo $dlLink; ?>Download File</a>
这就是我所做的,因为 Go Daddy 在 2 分 30 秒左右后终止了脚本的运行......这可以防止该问题并隐藏实际文件。
然后,您可以设置 CRON 作业以定期删除符号链接....
然后,整个过程会将文件发送到浏览器,它运行多长时间并不重要,因为它不是脚本。