PHP - список файлов Excel для загрузки с интранет сайта? - PullRequest
1 голос
/ 16 ноября 2009

У меня есть сайт интрасети, работающий под управлением PHP 5, который должен перечислять папку, содержащую только файлы 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 ]

5 голосов
/ 16 ноября 2009

Предполагая, что вы используете PHP-скрипт для доставки содержимого файла, скрипт должен установить заголовок 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 голос
/ 16 ноября 2009

Также добавьте заголовок Content-Length:

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

Клиент хотел бы знать, насколько большой файл и сколько файлов уже загружено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...