Option 1: 如果只有一个下载文件/路径,那么可以使用htaccess实现这一点。但如果你有更多的文件可供下载。为每个下载请求创建一个临时文件并使用htaccess不是一个好主意。
$path="uploads/";
$actualfilename=$path.$filename;
$fakefilename="downloadfile.pdf";
if($typeofview=="download") {
@readfile($actualfilename);
header(\'Content-type: application/pdf\');
header(\'Content-Disposition: attachment; filename="\' . $fakefilename . \'"\');
header(\'Content-Transfer-Encoding: binary\');
header(\'Content-Length: \' . filesize($actualfilename));
header(\'Accept-Ranges: bytes\');
exit;
将此添加到。htaccess文件
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule fakefile.php(.*)$ orignalfile.php?$1 [L,QSA]
Option 2: 相反,为每个文件创建一个符号链接()是一个更好的主意。这将节省磁盘空间负载并降低服务器负载。
在用户会话之后命名符号链接是一个不错的主意。更好的方法是生成一个随机符号链接名称&;与会话关联,以便脚本可以处理每个会话的多次下载。您可以使用session\\u set\\u save\\u handler()(link) 并注册一个自定义读取函数,用于检查过期会话,并在会话过期时删除符号链接。