【发布时间】: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