2016-06-14 5 views
1

특정 디렉토리의 내용을 링크로 표시하려고합니다. 클릭하면 파일을 열거 나 다운로드해야합니다. html 파일 링크를 클릭 할 때 링크가 작동하지 않습니다. 링크를 마우스 오른쪽 버튼으로 클릭하여 복사하여 붙여 넣으면 새 탭이 열리고 파일이 열립니다.PHP - 디렉토리에있는 파일 목록 열기 및 열기

내 코드 :

<?php 
    $dir = 'c:/dir/work'; 
    $files = scandir($dir); 
    $filecount = count($files); 
    for ($i=0; $i <= $filecount ; $i++) { 
     if ($files[$i] != '.' && $files[$i] != '..') { 
     echo '<p><a href="' . $dir . '/' . $files[$i] . '">' . $dir . '/' . $files[$i] . '</a></p>'; 

     } 
    } 
?> 

답변

0

당신은 다운로드 할 모든 파일에 대한 중앙 처리 스크립트를 가지고해야한다.

echo '<p><a href="downloadfile.php?path=' . $dir . '/' . $files[$i] . '">' . $dir . '/' . $files[$i] . '</a></p>'; 

그리고이 스크립트에서

, 당신은 파일 다운로드를 얻기 위해, 대신에 다음과 같이 인라인 표시되는 콘텐츠 - 처리 헤더를 보낼 필요가 : 그래서 당신의 HREF는 다음과 같이 대신 파일 자체의 스크립트를 가리 킵니다 :

header('Content-Disposition: attachment; filename='.$_GET['path']); 

희망이 있습니다.

0

생성 된 링크를 클릭하면 자동 다운로드 파일에 대한 제안 된 코드를 살펴보십시오.

<?php 
$dir = 'c:/dir/work'; 
$files = scandir($dir); 
$filecount = count($files); 
for ($i=0; $i <= $filecount ; $i++) { 
    if ($files[$i] != '.' && $files[$i] != '..') { 
    echo '<p><a href=?file=' . $dir . $files[$i] . '>' . $dir . '/' . $files[$i] . '</a></p>'; 

    } 
} 
if(isset($_GET['file'])){ 
    header('Content-Type: application/octet-stream'); 
    header("Content-Transfer-Encoding: Binary"); 
    header("Content-disposition: attachment; filename=\"" . basename($_GET['file']) . "\""); 
    readfile($_GET['file']); 
} 
?> 
0

답장을 보내 주셔서 감사합니다. 나는 그 (것)들을 시도하고, 그러나 저를 위해 작동하지 않았다. 나는 이것에 대한 기본을 놓친다 고 생각한다. 결계 나는 다른 것을 알아 냈습니다 :

// LIST FILES FROM UPLOADS/SUBDIR BY DAY-ID 
function list_files_from_subdir ($subdir, $day_id) { 

    $upload = wp_upload_dir(); 
    $dir = $upload[basedir] . $subdir; 
    $url = $upload[baseurl] . $subdir; 
    $files = scandir($dir); 
    $filecount = count($files); 

    for ($i=0; $i <= $filecount ; $i++) { 

     $fileday = substr($files[$i], 0, 8); 

     if ($day_id == $fileday) { 

     echo '<p><a href="' . $url . $files[$i] . '" target="_blank">' . $files[$i] . '</a></p>'; 

     } 

    } 

}