0

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

我正在尝试用 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 菜鸟,所以任何帮助将不胜感激!

4

2 回答 2

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”的提交按钮。

于 2012-08-07T06:47:20.777 回答
0

上面的答案是完美的,因为您应该检查 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']);  
        }

}


    ?>
于 2012-08-07T07:23:25.360 回答