2009-11-16 1 views
1

Excel 파일 만 포함 된 폴더를 나열해야하는 PHP 5를 실행하는 인트라넷 사이트가 있습니다.PHP - 인트라넷 사이트에서 다운로드 할 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의 콘텐츠 형식을 강제로 적용하도록 하이퍼 링크를 얻으려면 어떻게해야합니까? 당신은 또한 Content-Disposition 헤더를 사용하여 파일에 사용할 이름을 설정할 수 있습니다

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

참고 : 파일 conent을 전달하기 위해 PHP 스크립트를 사용하는 가정

답변

5

이 스크립트는 Content-Type 헤더를 설정해야합니다.

또한 다운로드 스크립트를 가리키는 더 잘 형성 <a> 태그를 고려할 수 있습니다 :이 예에서

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

을, 당신은 당신의 실제 스크립트 dl.php를 교체해야합니다.

1

또한 콘텐츠 길이 헤더를 추가합니다

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

클라이언트가 파일이 얼마나 큰지 알고 이미 얼마나 많은 그것의 다운로드 된 싶습니다.