PHP 下拉子文件夹选择


PHP dropdown subfolder selection

我正在为我的办公室构建一个简单的上传门户。我已经成功地对其进行编码以将上传的项目传递到名为/uploads 的文件夹中,但是我想添加一个下拉列表以在多个子文件夹之间进行选择,以便人们可以更好地组织其中的内容。

这是我的网页

<html>
    <body>
        <form action="upload.php" method="post" enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file"><br>
            <select name="Folder">
                <option value="OurPhoto">Our Photos</option>
                <option value="StockPhoto">Stock Photos</option>
                <option value="Video">Videos</option>
                <option value="Document">Documents</option>
                <option value="Other">Other</option>
            </select>
            <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html>

这是我上传的PHP.php

if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
        echo $_FILES["file"]["name"] . " already exists. ";
    }
    else {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
    }
}

我的子文件夹名为MCPhoto,StockPhoto,Video,Documents and Other。我的PHP知识有点弱,所以我真的不知道从这里开始

您需要

$_POST变量中获取文件夹字段的值,并将其包含在上传代码中。

if (file_exists("upload/".$_POST["Folder"] . "/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  "upload/" . $_POST["Folder"] . "/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "upload/" . $_POST["Folder"] . "/" . $_FILES["file"]["name"];
  }
}

你可以使用这样的东西:

$folder = $_POST['Folder'];
// sanitise $folder
$location = 'upload/' . rtrim($folder, '/') . '/' . $_FILES['file']['name'];
if(file_exists($location)) {
    echo $_FILES['file']['name'] . ' already exists.';
}
else {
    move_uploaded_file($_FILES['file']['tmp_name'],  $location);
    echo 'Stored in: ' . $location;
}

$location中使用Folder输入之前,请绝对确保输入是安全的。

这段代码有太多的安全漏洞。 当我说你应该在尝试这个之前做更多的研究时,我试图帮助你。

请至少阅读:http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

您可能需要聘请专业人员,因为您的服务器的安全性受到威胁。

这是你可以在这里做的。

由于要将文件存储到您选择的子文件夹中,因此您需要首先使用

   $_POST['folder'] 

  $GLOBALS['_POST']['folder']

然后存储到像$loc这样的变量中,然后你可以以这种方式添加代码

    move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" .$loc."/". $_FILES["file"]["name"]);

这个网站很新,所以我不熟悉如何以良好的方式显示代码......

希望对您有所帮助