【问题标题】:$_FILES["file"]["name"] is returning empty value [closed]$_FILES["file"]["name"] 返回空值 [关闭]
【发布时间】:2014-09-03 00:50:41
【问题描述】:

好的,所以我正在创建这个网站,允许用户直接将文件上传到服务器而无需登录。一切都很好(到目前为止),除了一个小问题。当我记录 IP 时,我希望它打印用户 IP 和他们上传的文件名。除了文件名外,一切正常。我已经检查了所有可能的问题,并搜索了几个小时。它本来可以做的一切都没有让它发挥作用。请看看我有什么,如果你发现问题,请告诉我。谢谢!

如果您好奇,该网站是http://box.endurehosting.com/

<html>

<head>

<title>EndureBox | Upload</title>

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

 <style type="text/css">

@import url("webfonts/Muli/fontstylesheet.css");

/*<![CDATA[*/

        .TitleText 
            {
                font-family: Muli;
                font-size: 58px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #FFF;
                text-shadow: 0px 0px 10px #707070;
            }

        .NormalText 
            {
                font-family: Muli;
                font-size: 18px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #FFF;
                text-shadow: 0px 0px 6px #999;
            }

        .SuccessText 
            {
                font-family: Muli;
                font-size: 30px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #83F52C;
                text-shadow: 0px 0px 6px #83F52C;
            }

        .FailedText     
            {
                font-family: Muli;
                font-size: 30px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #FF0000;
                text-shadow: 0px 0px 6px #FF0000;
            }

        .FileText 
            {
                font-family: Muli;
                font-size: 14px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #FFF;
                text-shadow: 0px 0px 6px #999;
            }

        .BlackText 
            {
                font-family: Muli;
                font-size: 19px;
                font-style: normal;
                line-height: normal;
                font-weight: normal;
                font-variant: normal;
                color: #000000;
                text-shadow: 0px 0px 3px #999999;
            }

    /*]]>*/

body {background-image:url("images/background.png");}

</style>

</head>

<body>

<div align="center">

</br><h1 class="TitleText">Endure Box</h1>

<?php 
if ($_POST)
    {
        $folder = "box/"; 
        $redirect = "index.php?complete";

        move_uploaded_file($_FILES["file"]["tmp_name"], "$folder" . $_FILES["file"]["name"]);

        header('Location: '.$redirect);
    }

if (isset($_GET['complete'])) 
    {
        if ($_FILES["file"]["error"] > 0)
            {
                echo "<span class='notice'><p class='SuccessText'>Upload Failed!</p></span>";
                echo "<span class='notice'><p class='NormalText'>" . $_FILES["file"]["error"] . "</p></span>";
            }
        else
            {
                echo "<span class='notice'><p class='SuccessText'>Upload Successful!</p></span>";

                $ipLog="log.txt";
                $friendly_name = $_FILES["file"]["name"];
                $register_globals = (bool) ini_get('register_gobals'); 

                if ($register_globals)
                {
                    $ip = getenv(REMOTE_ADDR); 
                }
                else 
                {
                    $ip = $_SERVER['REMOTE_ADDR'];
                }           

                $date=date ("l dS of F Y h:i:s A");
                $log=fopen("$ipLog", "a+"); 

                if (preg_match("/\bhtm\b/i", $ipLog) || preg_match("/\bhtml\b/i", $ipLog))  
                    { 
                        fputs($log, "File: $friendly_name | IP Address: $ip | Date Uploaded: $date <br>"); 
                    } 
                    else
                    {
                        fputs($log, "File: $friendly_name | IP Address: $ip | Date Uploaded: $date \n"); 
                    }

                fclose($log);
        }
    }
?>

<form action="index.php" method="post" enctype="multipart/form-data">

<p class="NormalText">Choose a file to upload</p></br>
<input type="file" name="file" id="file" class="FileText"/></br></br></br>
<input type="submit" name="submit" class="BlackText" value="Submit"/></br></br></br>

</form>

<a href="contents.php"> <img border="0" src="/images/box.png" alt="Open Box" width="200" height="200"></a></br></br></br>

<a href="contents.php" class="NormalText">Open Box</a>

</div>

</body>

</html>

【问题讨论】:

  • 哪里不行?在POSTGET 之后? POST 应该给你文件,GET 不会。

标签: php html file upload


【解决方案1】:

在您的情况下,问题在于以下行:

header('Location: '.$redirect);

当你第一次运行move_uploaded_file 然后使用header 函数进行重定向时,$_FILES 数组为空,所以在下一行简单你不能再检查$_FILES

此外,我认为进行此重定向没有任何意义。当您move_uploaded_file 时,它会在成功时简单地返回 true,因此您可以更改以下代码:

<?php 
if ($_POST)
    {
        $folder = "box/"; 
        $redirect = "index.php?complete";

        move_uploaded_file($_FILES["file"]["tmp_name"], "$folder" . $_FILES["file"]["name"]);

        header('Location: '.$redirect);
    }

if (isset($_GET['complete'])) 

进入

<?php 

$uploadStatus = false;
if ($_POST)
    {
        $folder = "box/"; 

       $uploadStatus = move_uploaded_file($_FILES["file"]["tmp_name"], "$folder" . $_FILES["file"]["name"]);

    }

if ($uploadStatus) 

【讨论】:

  • 非常感谢!你真棒!我一直在努力解决这个问题!
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多