从下拉菜单中下载文件

时间:2016-04-27 08:47:32

标签: javascript php

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

1 个答案:

答案 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循环中的选项标签。如果它适合你,请告诉我。