【问题标题】:"Undefined index" when trying uploading file using PHP尝试使用 PHP 上传文件时出现“未定义的索引”
【发布时间】:2012-08-07 06:43:19
【问题描述】:

这应该是非常直截了当的,让我发疯!

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

问题是当我尝试使用该网站时,该网站一直抛出“未定义索引”

$_FILES['file']['tmp_name'] 属性。

这是我的代码:

<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>

这是错误消息的样子:

我什至还没有进入数据库方面,因为我无法通过这个阶段。

我是一个 PHP 菜鸟,所以任何帮助将不胜感激!

【问题讨论】:

    标签: php


    【解决方案1】:

    您收到该错误消息是因为该表单尚未发送。当您点击上传按钮时,表单会发送到您的服务器,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”的提交按钮。

    【讨论】:

    • 好的,所以我已经添加了这个并且错误消息消失了,但它仍然是空的。我已将此添加到我的逻辑顶部 - if (!isset ($_POST['upload'])) echo "请选择一个文件。" - 但是我选择一个文件并点击“上传”后,它仍然给我这个消息,这意味着它仍然没有设置,但我不明白为什么?
    • 你有一个名为“上传”的按钮吗? &lt;input type="submit" value="Upload" name="upload"&gt;
    • 抱歉,DavidS,没有添加“名称”属性。那部分已经整理好了。它仍然说文件未设置。不明白为什么不呢?
    • 感谢 DavidS 的帮助...+1 耐心等待!
    【解决方案2】:

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

    <?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']);  
            }
    
    }
    
    
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多