根据用户单击的内容更改文件名


Change filename according to what user clicks

一旦用户竞争表单,我就有三个文件被上传到数据库中。问题是我有三个不同的下载脚本来检索文件。。。这些文件将作为fileName1, fileName2, fileName3 and File1, File2, File3进入数据库。有没有办法只有一个下载脚本而不是三个不同的脚本?

以下是相关代码:

$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个下载链接。每个链接都有一个参数,例如"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

然后在文件中添加一个开关案例块。

$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;

没有测试。