尝试使用PHP上传文件时出现“未定义的索引”

时间:2012-08-07 06:43:20

标签: php

这可能是非常直接的,让我发疯了!

我正在尝试使用PHP上传文件并将文件作为blob写入MySQL。

问题是当我尝试使用

时,网站会一直抛出“未定义的索引”

$ _ FILES ['file'] ['tmp_name'] property。

这是我的代码:

<head>
    <title>Upload Worksheet</title>
</head>
<body>
    <form action="index.php" method="POST" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="2000" />
        File : 
        <input type="file" name"file" id="file"><input type="submit" value="Upload">
    </form>


    <?php

        //connect to db
        mysql_connect("localhost","root","") or die(mysql_error());
        mysql_select_db("autoedi") or die(mysql_error());

        //file properties
        $file = $_FILES['file']['tmp_name'];

        if(!isset($file))
        echo "Please choose a file.";
        else {
            $uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
            $uploadfilename = addslashes($_FILES['file']['tmp_name']);  
        }


    ?>


</body>

这是错误消息的样子:

Error Message

我甚至没有进入数据库方面,因为我无法超越这个阶段。

我是一个PHP菜鸟,所以任何帮助都将非常感谢!

2 个答案:

答案 0 :(得分:3)

您收到该错误消息,因为尚未发送表单。当您点击上传按钮时,表单将发送到您的服务器,PHP将使用数据填充$ _POST和$ _FILES数组。但是,在此之前,数组是空的。因此,最好检查您的数据是否已设置,如下所示:

if (isset ($_POST['upload']))
{
    // upload logic here

    if(!isset($_FILES['file']) || ($_FILES['file']['tmp_name'] == ''))
        echo "Please choose a file.";
    else {
        $uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
        $uploadfilename = addslashes($_FILES['file']['tmp_name']);  
    }
}

这假设您有一个名为“upload”的提交按钮。

答案 1 :(得分:0)

以上答案是完美的,因为您应该检查for post值以便在这些值上运行任何代码,但您也可以尝试以下

<?php

        //connect to db
        mysql_connect("localhost","root","") or die(mysql_error());
        mysql_select_db("autoedi") or die(mysql_error());

        //file properties
      if(isset($_POST))
    {

      if(array_key_exists('file',$_FILES))
    {   

     $file = $_FILES['file']['tmp_name'];

        if(!isset($file))
        echo "Please choose a file.";
        else {
            $uploadfile = addslashes(file_get_contents( $_FILES['file']['name']));
            $uploadfilename = addslashes($_FILES['file']['tmp_name']);  
        }

}


    ?>