我上传了多个培训文件,并根据training_ID列出了这些文件。如何下载与training_id相关联的具有多个文件的单个文件? 我有.txt,.pdf,.docx和.pptx文件类型。 这是我尝试过的PHP文件。
<?php
$id= $_GET['id'];
$mysqli = new mysqli("localhost","root","pass","test");
if ($mysqli->connect_errno)
{
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$query = "SELECT Material_Name,Material_Data from Training_Material where Training_Id='{$id}'";
$result = $mysqli->query($query);
if($result)
{
$row = mysqli_fetch_assoc($result);
header("Content-Disposition: attachment; filename=". $row['Material_Name']);
echo $row['Material_Data'];
@mysqli_free_result($result);
}
else
{
echo "Error! Query failed: <pre>{$mysqli->error}</pre>";
}
?>
使用此文件不会发生下载。
此处DB中的Material_Data列包含使用file_get_contents方法获取的上传文件的内容。我该怎么做才能进行下载?
答案 0 :(得分:0)
在我的一个网站上,我有多个可用的许可证数据,我所做的是将所有必需的许可证文件复制到临时文件夹,创建一个包含全部的zip存档,然后将zip文件推送给最终用户并删除临时文件数据。
这有单个文件下载的几个好处,压缩文件因此减少了下载宽带带宽的压力。还有一些处理器使用的缺点,用于编译zip和磁盘IO以便移动文件。但是我决定在现代硬件上IO / CPU在除了最大的网站之外几乎都是无关紧要的。
答案 1 :(得分:0)
你应该像这样发送一个内容类型的标题:
header("Content-Type: plain/text");