PHP - 从Intranet站点下载的Excel文件列表?

时间:2009-11-16 20:19:32

标签: php file download

我有一个运行PHP 5的Intranet站点,需要列出一个只包含Excel文件的文件夹。

理想情况下,用户需要能够输入一些搜索条件(即日期),文件将被过滤到超链接列表中。然后可以选择这些超链接来下载excel文件。

到目前为止我所拥有的是:

//get search parameters (from a form)
$s_Date = $_GET['s_Date'];
$s_Shift = $_GET['s_Shift'];
$s_Name = $_GET['s_Name'];

//search folder
foreach(glob("c:\folderA\folderB\*".$s_Date."*".$s_Shift."*".$s_Name."*.*") as     $FileName)
{
    echo basename($FileName);
    echo"<a href=?myad=".basename($FileName)."/>Download</a>"."<br />";
}

这将返回文件列表,但选择超链接不会提示下载。

如何获取超链接以强制使用内容类型的msexcel?

2 个答案:

答案 0 :(得分:5)

假设您使用PHP脚本提供文件conent,脚本需要设置Content-Type标题:

<?
    header('Content-Type: application/excel');
    header('Content-Disposition: attachment;filename=myfile.xls');
    // send file content
?>

请注意,您还可以使用Content-Disposition标题设置要用于文件的名称。

您可能还想考虑一个指向下载脚本的格式正确的<a>标记:

echo '<a href="dl.php?myad=' .urlencode(basename($FileName)). '">Download</a><br />';

在此示例中,您需要将dl.php替换为实际脚本。

答案 1 :(得分:1)

还附加Content-Length标题:

header('Content-Length : ' . filesize('myfile.xls'));

客户想了解文件的大小以及已下载了多少文件。