2014-11-10 4 views
0

현재 클릭하면 서버의 폴더에서 파일을 다운로드하는 PHP 드롭 다운 목록을 만들려고합니다. 나는 IIS를 사용하고 PHP 스크립트가 joomla 웹 페이지에서 실행될 수 있도록 joomla plugin sourcerer를 사용하고있다.클릭하면 폴더에서 파일을 다운로드하는 PHP 드롭 다운

현재이 코드 샘플을 사용하고 있으며 (자체적으로 생성하지 않은 스택 교환 포스트에서 가져온 것입니다.) 저는 그것을 자신의 환경에서 작동하도록 편집했습니다.

<p> 
<select name="s1"> 
<option value="" selected="selected">Select Document</option> 
<?php 
foreach(glob(dirname(path-to-root-dir) . '\path-to-sub-folder\*') as $filename){ 
$filename = basename($filename); 
echo "<option value='" . $filename . "'>".$filename."</option>"; 
} 
?> 
</select> 
</p> 

하지만 사용자가 브라우저에서 선택한 파일을 다운로드하도록 메시지를 표시 드롭 다운 목록에서 예를 들어있는 test.txt 위해 클릭 할 때 있도록 만들 수있는 방법을 생각하지 않았습니다. 나는이 .asp에서 일을 봤지만 PHP에 익숙하지 않아 이것이 가능할 지 확신 할 수 없습니까?

답변

0

이것은 PHP와 관련이 없으며 JavaScript와 더 관련이 있습니다. select 요소에서 항목을 선택하는 이벤트는 JavaScript에 의해 처리됩니다. 당신이 고유 id과 요소를 식별하는 경우

예를 들어, :

<select name="s1" id="s1"> 

그럼 당신은 안정적으로 자바 스크립트 요소를 얻을 수 있습니다 :

var selectElement = document.getElementById('s1'); 

이제 여기에 이벤트 처리기를 바인딩 할 수 있습니다 :

selectElement.addEventListener('change', function() { 
    // handle the event here 
}); 

당신이 원하는 것처럼 보입니다. select의 값을 가져 와서 그 값으로 브라우저를 URL로 지정하여 이벤트를 처리하십시오. 이 같은 것을 시작해야합니다 :

selectElement.addEventListener('change', function() { 
    var fileUrl = selectElement.options[selectElement.selectedIndex].value; 
    window.location.href = fileUrl; 
}); 

이 값은 실제로 파일의 올바른 URL이라고 가정합니다. 그렇지 않은 경우 물론 그 문제를 해결해야합니다. 그러나 요점은이 이벤트에 응답하고 브라우저에 "파일 다운로드"를 지시하는 것이 JavaScript의 클라이언트 측 작업이라는 것입니다.

0

foreach (new DirectoryIterator('/path-to-sub-folder') as $file) 
    { 
     if($file->isDot()) continue; 
     if($file->isFile()) 
     { 
      $filename = basename($file); 
      echo "<option value='" . $filename . "'>".$filename."</option>"; 
     } 
    } 
0

내가 아마

PHPScript {

$con = mysql_connect("$host","$username","$password") or die("Unable to connect to Local DB"); 
$db_selected = mysql_select_db("$db_name", $con)or die("Unable to select DB"); 

// retrive data which you want to export 
$query = "SELECT * FROM File_List"; 
$Options = '<option value="" selected> Please select a file. </option>'; 
while($Row=mysql_fetch_array($query)){ 

$Options .= '<option value="'.$Row['FileID'].'">'.$Row['FileName'].'</option> 
';} 
echo ' <select id="FileList">'.$Options.'</select> <p id="FileGrab"></p> 
<script> 
var from = $("#FileList").val(); 
$("#FileGrab").load("Grab_File.php?Name=" + from); 
</script> 
'; 
}를로드 한 후 jQuery를 사용하여 파일의 위치와 이름을 저장하기 위해 MySQL을/phpMyAdmin을을 사용하십시오

grab_file.php {

$ID = $_GET['Name']; 
$con = mysql_connect("$host","$username","$password") or die("Unable to connect to Local DB"); 
$db_selected = mysql_select_db("$db_name", $con)or die("Unable to select DB"); 

// retrive data which you want to export 
$query = "SELECT * FROM File_List WHERE id='$ID'"; 
while($Row=mysql_fetch_array($query)){ 
$Location = $Row['Location']; 
$Name = $Row['Name']; 

$file = ''.$Location.''.$Name.''; 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 

}

관련 문제