从下拉菜单下载文件

downloading files from a dropdown menu

本文关键字:文件 下载 下拉菜单      更新时间:2023-09-26

我正在尝试添加一个下拉菜单,显示位于目录(上传)中的文件,并让用户选择(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>

你应该试试这个:

$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 循环中更新选项标签。请让我知道它是否适合您。