0

我已经为培训上传了多个文件,并根据 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 方法获取的上传文件的内容。我应该怎么做才能使下载发生?

4

2 回答 2

0

在我有多个可用许可证数据的站点之一上,我所做的是将所有必需的许可证文件复制到临时文件夹,创建一个包含所有内容的 zip 存档,然后将 zip 文件推送给最终用户并删除临时文件数据.

这有几个好处单文件下载,压缩文件,所以下载减少带宽压力。在编译 zip 和磁盘 IO 以移动文件时,处理器使用也有一些缺点。然而,我认为在现代硬件上,IO/CPU 几乎与最大的网站无关。

于 2013-01-23T08:43:49.270 回答
0

您应该像这样发送内容类型标头:

header("Content-Type: plain/text");
于 2013-01-23T08:44:50.397 回答