PHP基于HTML复选框上传到某个文件夹

时间:2016-09-25 14:08:19

标签: php html upload

我是PHP的新手并且还在学习,但我想知道我是否能够做这样的事情。我有一个基本的HTML表单,如下所示。

<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
<label><input type="checkbox" id="cb" value="checkb">Make Private.</label>
</form>

还有一个基本的上传PHP文档,如下所示。

<?php

if ($_FILES["file"]["size"] < 2097152) {
    if ($_FILES["file"]["error"] > 0) {
        header('Location: /');
    }else {
        echo "Original Name: " . $_FILES["file"]["name"] . "<br>";
        echo "File Type: " . $_FILES["file"]["type"] . "<br>";
        echo "File Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        $randprefix = hash('ripemd160', openssl_random_pseudo_bytes(32), false);
        $filepath = "upload/" . $randprefix . $_FILES["file"]["name"];
        if (file_exists($filepath)) {
            echo $filepath . " already exists. ";
        }else {
            move_uploaded_file($_FILES["file"]["tmp_name"], $filepath);
            echo "Link to file: " . '<a href = "' . $filepath . '">' . $filepath . '</a>' ;

        }
    }
}else {
    echo "File too large.";
}
?>

我要问的是,是否可以在HTML表单上设置一个复选框,当选中该文件时,文件将上传到名为“private”的文件夹,当取消选中时,文件将上传到名为“public”的文件夹。谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用这样的条件,这样只有在提交表单后才能获得复选框值。

if(isset($_POST['check']))
{
    $filepath = "upload/private" . $randprefix . $_FILES["file"]["name"];
}
else
{
    $filepath = "upload/public" . $randprefix . $_FILES["file"]["name"];
}
  

您必须为复选框输入类型设置名称,以便您可以检入upload.php页面,然后在那里设置文件夹。

替换:

<label><input type="checkbox" id="cb" value="checkb">Make Private.</label>

使用:

<label><input type="checkbox" id="cb" value="checkb" name="check">Make Private.</label>

说明:当用户在提交时选中该复选框时,它会检查复选框值,并将$filepath设为upload/private,否则用户在提交数据时他/她没有选中复选框,如果复选框值,它将根据选择更改代码。因此,您可以move_upload_file()根据可用的选择。

答案 1 :(得分:0)

<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
<label><input type="checkbox" id="cb" name="checkb" value="checkb">Make Private.</label>
</form>
<?php
if ($_FILES["file"]["size"] < 2097152)
{
  if ($_FILES["file"]["error"] > 0)
  {
    header('Location: /');
  }
  else
  {
    echo "Original Name: " . $_FILES["file"]["name"] . "<br>";
    echo "File Type: " . $_FILES["file"]["type"] . "<br>";
    echo "File Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    $randprefix = hash('ripemd160', openssl_random_pseudo_bytes(32), false);
    if($_POST['checkb'] == "checkb")
    {
      $filepath = "private/" . $randprefix . $_FILES["file"]["name"];
    }
    else
    {
      $filepath = "upload/" . $randprefix . $_FILES["file"]["name"];
    }
    if (file_exists($filepath))
    {
      echo $filepath . " already exists. ";
    }
else
{
  move_uploaded_file($_FILES["file"]["tmp_name"], $filepath);
  echo "Link to file: " . '<a href = "' . $filepath . '">' . $filepath . '</a>' ;

    }
  }
}
else
{
  echo "File too large.";
}
?>

我认为这是我测试的工作而你没有问题要复制!