我正在尝试添加一个下拉菜单,显示位于目录(上传)中的文件,并让用户选择(a)文件下载到本地计算机。 我使用以下PHP代码填充数组和伪HTML代码以生成下拉菜单,该菜单应该将所选文件的名称传递给JavaScript,以强制浏览器下载文件。 这里有两个问题,1-似乎所选文件的名称(第15行)没有传递给JavaScript(第23行); 2-即使我强制使用文件名(第27行),也会收到权限错误,导致文件无法下载。 由于我完全没有编码经验,所以我能得到的任何帮助都非常感谢。
PHP:
$dirname = realpath(__DIR__ . '/..' . '/uploads');
$files = array();
$dir = opendir($dirname);
while(($file = readdir($dir)) !== false)
{
if($file !== '.' && $file !== '..' && !is_dir($file))
{
$files[] = $file;
}
}
closedir($dir);
sort($files);
$files[] = 'Select a document to download';
echo '<select name="download" class="pickupzone" onchange="myDownload(this.value)">';
for($i=0; $i<count($files); $i++)
{
echo '<option value="" selected="selected">' . $files[$i] . '</option>';
}
echo '</select>';
?>
JavaScript的:
<script type="text/javascript">
function myDownload(val)
{
if (val == 'Select a document to download') return;
var link = document.createElement("a");
link.download = val;
link.href = '../uploads/';
link.click();
window.alert('downloading: ' + link + link.download);
</script>
答案 0 :(得分:0)
你应该尝试这个:
$dirname = realpath(__DIR__ . '/..' . '/uploads');
$files = array();
$dir = opendir($dirname);
while(($file = readdir($dir)) !== false)
{
if($file !== '.' && $file !== '..' && !is_dir($file))
{
$files[] = $file;
}
}
closedir($dir);
sort($files);
$files[] = 'Select a document to download';
echo '<select name="download" class="pickupzone" onchange="myDownload(this.value)">';
for($i=0; $i<count($files); $i++)
{
echo '<option value="' . $files[$i] . '" selected="selected">' . $files[$i] . '</option>';
}
echo '</select>';
?>
这里我只是更新for循环中的选项标签。如果它适合你,请告诉我。