0

我可以将我的文档上传到我的主要测试目录。但我想调出我的变量staffNo 并将其放在特定的staffNo 目录中。但是,即使我已经为我的输入声明了合适的名称,我也无法解析出变量。

例如:

员工页面

$staffNo = 1;
<form id="Staff" name="Staff" method="post" action="upload.php" enctype="multipart/form-data">

//My staffno variable
<input type="hidden" id="staffNo" name="staffNo" value="<?php echo $staffNo ?>"/>

//Upload document
<input name="upload" id="upload" type="file"/>
<input type="hidden" name="upload" value="upload"/>

//Submit button
<input type="submit" name="submit" value="Submit">
</form>

上传.php

switch($_POST['submit']) 
{
case 'Submit':
    if ($_FILES["upload"]["error"] > 0)
    {
    echo "Error: " . $_FILES["upload"]["error"] . "<br />";
    }
    else
    {
    echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
    echo "Type: " . $_FILES["upload"]["type"] . "<br />";
    echo "Stored in: " . $_FILES["upload"]["tmp_name"];

    move_uploaded_file($_FILES["upload"]["tmp_name"],
  "documents/"."staffNo"."/".$_FILES["upload"]["name"]);

            echo "Stored in: " ."./documents/"."staffNo"."/".  $_FILES["upload"]["name"];
}

break;

case 'others':
break;

default;

我的 staffNo 变量无法调用,即使它已经在表格下。我在哪里做错了吗?而且我还想为staffNo创建一个新文件夹,如果里面没有的话。但现在基本人员没有变数是无法呼唤出来的。好心提醒。

4

1 回答 1

2

我已经修复了您提交的 upload.php 中的几个错误。您需要将隐藏字段的值分配给变量: $staffNo = $_POST['staffNo'];

上传.php

switch($_POST['submit']) 
{
    case 'Submit':
        if ($_FILES["upload"]["error"] > 0)
        {
            echo "Error: " . $_FILES["upload"]["error"] . "<br />";
        }
        else
        {
            $staffNo = $_POST['staffNo']; // preform validation here
            echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
            echo "Type: " . $_FILES["upload"]["type"] . "<br />";
            echo "Stored in: " . $_FILES["upload"]["tmp_name"];
            // check if directory exists
            if(!is_dir("documents/".$staffNo)){
                // if it doesn't - create it
                mkdir("documents/".$staffNo);
            }
            move_uploaded_file($_FILES["upload"]["tmp_name"],
            "documents/".$staffNo."/".$_FILES["upload"]["name"]);
            echo "Stored in: " ."./documents/".$staffNo."/".  $_FILES["upload"]["name"];
        }

    break;

    case 'others':
    break;

    default;
}

您可能应该验证staffNo以防止通过例如 firebug 更改其值,并弄乱上传路径。

于 2012-07-07T10:31:30.203 回答