PHP раскрывающийся список, который загружает файл из папки при нажатии на

0

В настоящее время я пытаюсь создать раскрывающийся список PHP, который загружает файл из папки на сервере при нажатии. Я использую IIS и используя joomla plugin sourcerer, который позволяет скриптам PHP работать на веб-страницах joomla.

В настоящее время я использую этот образец кода (из сообщения обмена стеками, которое не создано мной), и я отредактировал его для работы в моей собственной среде.

<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, поэтому я не уверен, что это возможно?

Теги:

3 ответа

0
Лучший ответ

Это будет иметь меньше общего с PHP и больше связано с JavaScript. Событие выбора элемента в элементе select обрабатывается JavaScript.

Например, если вы однозначно идентифицируете элемент с id:

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

Затем вы можете надежно получить элемент в JavaScript:

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

я бы, вероятно, использовал Mysql/PHPMYADMIN для хранения местоположения файла и его имени, чтобы затем использовать jquery для загрузки

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>
';

}

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));

}

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>";
        }
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню