PHP文件下载

时间:2013-01-23 08:39:29

标签: php

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

2 个答案:

答案 0 :(得分:0)

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

这有单个文件下载的几个好处,压缩文件因此减少了下载宽带带宽的压力。还有一些处理器使用的缺点,用于编译zip和磁盘IO以便移动文件。但是我决定在现代硬件上IO / CPU在除了最大的网站之外几乎都是无关紧要的。

答案 1 :(得分:0)

你应该像这样发送一个内容类型的标题:

header("Content-Type: plain/text");