根据用户点击更改文件名

Change filename according to what user clicks

用户完成表单后,我将三个文件上传到数据库中。问题是我有 3 个不同的下载脚本来检索文件...文件将作为 fileName1, fileName2, fileName3 and File1, File2, File3。有什么方法可以只下载 1 个下载脚本而不是 3 个不同的脚本吗?

相关代码如下:

$id    = $_GET['id'];
$query = "SELECT FileName3, File3 " .
         "FROM UserUploads WHERE ID = '$id'";

$result = mysqli_query($connection, $query) or die('Error, query failed');
list($filename3, $file3) = mysqli_fetch_array($result);

header("Content-Disposition: attachment; filename=$filename3");
echo $file3;

我可以将所有 fileName1, fileName2, fileName3 and File1, File2, File3 添加到 SELECT 语句中,但问题是 header()echo 行之后......我如何根据用户点击了什么?

如果您为一位用户提供 3 次下载 link。每个 link 都有一个参数,例如 'file':

http://your-domain.com/download.php?file=1&id=1234
http://your-domain.com/download.php?file=2&id=1234
http://your-domain.com/download.php?file=3&id=1234

然后将 switch case 块添加到您的文件。

$id    = (int)$_GET['id'];
$file  = (int)$_GET['file'];

if($file <= 0 || $file >= 4) {
    die('bad boy');
}

$query = "SELECT FileName$file as filename, File$file as file " .
         "FROM UserUploads WHERE ID = '$id'";

$result = mysqli_query($connection, $query) or die('Error, query failed');
list($fn, $data) = mysqli_fetch_array($result);

header("Content-Disposition: attachment; filename=$fn");
echo $data;

没测试过。