如何在同一脚本中强制下载不同的 .pdf?
How do I force-download different .pdfs in same script?
我有一个包含 3 link 的网页。
当有人点击 link 时,它会将他们重定向到 redirect.php 并强制下载相应的 .pdf。为什么所有 3 link 都强制下载同一个 .pdf 文件?如何才能让每个 link 下载不同的 .pdf 文件?
你可以用$_GET['dl']
读出_GET Variable"dl"的参数值。
<?php
if (isset($_GET['dl'])) {
switch ($_GET['dl']) {
// whitelist of downloadable files
case "mypdf1.pdf":
case "mypdf2.pdf":
case "mypdf3.pdf":
$file = basename($_GET['dl']);
default:
die("no such file");
}
} else {
die("bad request");
}
// provide file
header('Cache-control: private');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: anytextexeptno-cache', true);
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=$file"); //external
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Expires: 0');
readfile("hiddenfiles/$file");
HTML
<a href="redirect.php?dl=mypdf1.pdf" target='_blank'>mypdf1.pdf</a>
<a href="redirect.php?dl=mypdf2.pdf" target='_blank'>mypdf2.pdf</a>
...
如果您同时想要全部 3 个,那么您可以提供像 zip 或 tar 这样的存档。
我有一个包含 3 link 的网页。
当有人点击 link 时,它会将他们重定向到 redirect.php 并强制下载相应的 .pdf。为什么所有 3 link 都强制下载同一个 .pdf 文件?如何才能让每个 link 下载不同的 .pdf 文件?
你可以用$_GET['dl']
读出_GET Variable"dl"的参数值。
<?php
if (isset($_GET['dl'])) {
switch ($_GET['dl']) {
// whitelist of downloadable files
case "mypdf1.pdf":
case "mypdf2.pdf":
case "mypdf3.pdf":
$file = basename($_GET['dl']);
default:
die("no such file");
}
} else {
die("bad request");
}
// provide file
header('Cache-control: private');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: anytextexeptno-cache', true);
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=$file"); //external
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Expires: 0');
readfile("hiddenfiles/$file");
HTML
<a href="redirect.php?dl=mypdf1.pdf" target='_blank'>mypdf1.pdf</a>
<a href="redirect.php?dl=mypdf2.pdf" target='_blank'>mypdf2.pdf</a>
...
如果您同时想要全部 3 个,那么您可以提供像 zip 或 tar 这样的存档。