我有一个运行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?
答案 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'));
客户想了解文件的大小以及已下载了多少文件。