【问题标题】:How to select a file from a Drop-down list which gives a list of files in a folder and later upload the selected file如何从提供文件夹中文件列表的下拉列表中选择文件,然后上传所选文件
【发布时间】:2021-08-03 07:29:57
【问题描述】:

我正在尝试使用下拉列表创建上传功能。基本思想是下拉框列出一个文件夹中的所有文件,当用户从下拉列表中选择一个文件时,它应该被上传。

我的 HTML 表单:

> <form action="upload.php" method="post" enctype="multipart/form-data">
>      <label for="fileToUpload"><b> Select file to Upload:</b></label>
>       <input type="file" name="fileToUpload" id="fileToUpload">
>       <select name="fileToUpload" id="fileToUpload">
>       <?php
>         $directory = "/some/folder/in/server";                                          //location of directory with files
>         $scanned_directory = array_diff(scandir($directory), array("..", "."));         //removes . and .. files whic$
>         $files = array_map("htmlspecialchars", $scanned_directory);                     //scans directory and returns$
>           foreach ($files as $file) {
>             echo "<option value='$file'>$file</option>";
>           }
>       ?>
>       </select>
>       <input type="submit" value="Upload File" name="submit">
>      </form>

上传.php

<?php

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$success = "File " . basename( $_FILES["fileToUpload"]["name"]). " uploaded.";
$fail = "Error uploading file.";

  if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    //echo "The file " . basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    echo "<script type='text/javascript'>alert('$success');</script>";
    echo "<script>window.location='index.php'</script>";
  } else {
    echo "<script type='text/javascript'>alert('$fail');</script>";
    echo "<script>window.location='index.php'</script>";
  }

?>

如果我只使用但不适用于下拉列表,则代码可以正常工作。我虽然可以列出文件夹中的文件,但在选择文件和上传文件时遇到问题。

任何帮助将不胜感激!

【问题讨论】:

  • 您正在显示来自服务器上某个位置的文件列表,然后期望用户从他们的工作站上传其中一个文件?即使没有安全隐患,我也看不出它会如何工作。
  • @TangentiallyPerpendicular 所以也不能限制从特定文件夹上传文件?问题是我希望我的网页由其他人测试,这样他/她就无法访问我们服务器上的敏感信息,我想限制文件上传到特定文件夹

标签: javascript php html forms file-upload


【解决方案1】:

出于安全原因,您只能使用&lt;input type="file" /&gt; 上传文件。 https://stackoverflow.com/a/1553777/1772933

【讨论】:

    【解决方案2】:

    您只是在寻找一种肮脏的方式来复制文件...
    这是怎么做的
    首先从 HTML 表单中删除 enctype="multipart/form-data&lt;input type="file" name="fileToUpload" id="fileToUpload"&gt;

    然后你的 PHP

    <?php
    $name = $_POST["fileToUpload"];
    $scanned_dir = "/some/folder/in/server/".$name; //The previous location of the file
    $target_dir = "uploads/".$name; //The destination
    
    if(!copy($scanned_dir,$target_dir)){ //Check if the transfer is successful
          echo "<script type='text/javascript'>alert('fail');</script>";
          echo "<script>window.location='index.php'</script>";
    }
    else{ 
        //echo "The file ".$name." has been uploaded.";
        echo "<script type='text/javascript'>alert('success');</script>";
        echo "<script>window.location='index.php'</script>";
    }
    ?>
    

    如果您想移动文件... 使用 rename() 而不是 copy()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2013-12-14
      • 1970-01-01
      相关资源
      最近更新 更多