php上传文件并移至服务器

时间:2015-07-24 13:34:15

标签: php

我想从我的服务器上传文件。几个月前,当它工作正常时,我写过这段代码,但现在我不知道出了什么问题。

我基本上想将文件移动到我的服务器中的“uploads”文件夹,然后将路径存储在数据库中。

上传的文件不会反映在数据库中。

if(isset($_POST['submit']))
{
    require("dbconn.php");
    $filename = $_POST['filename'];
    $name = $filename . "." . pathinfo($_FILES['ufile']['name'],PATHINFO_EXTENSION);
    //$name = $_FILES['ufile']['name'];
    //$size = $_FILES['file']['size']
    //$type = $_FILES['file']['type']

    $tmp_name = $_FILES['ufile']['name']; //was tmp_name
    $error = $_FILES['ufile']['error'];
    if(isset($name)) 
    {
        if(!empty($name)) 
        {
            $location = 'uploads/';

            if(move_uploaded_file($tmp_name, $location.$name))
            {
                echo "hi";
                $filename = $_POST['filename'];
                $filepath = $location.$name;
                $advname = $_POST['advname'];
                $year = $_POST['year'];
                $cname = $_POST['cname'];
                $ctype = $_POST['ctype'];
                $sqlq = "INSERT INTO file(filename, filepath, advname, year, cname, ctype) VALUES ('".$filename."','".$filepath."','".$advname."','".$year."','".$cname."','".$ctype."');";
                $result = mysql_query($sqlq);
                if(!$result)
                {
                    die("Error in connecting to database!");
                }
            }
        } 
    }
}

中似乎存在问题
if(move_uploaded_file($tmp_name, $location.$name))

语句。此条件评估为false。

1 个答案:

答案 0 :(得分:1)

如果$_FILES['ufile']['error']为您提供的值为1,则配置中的upload_max_filesize将设置为您尝试上传的文件的较小值。

您无法在代码中更改upload_max_filesize

如果您有权访问php.ini.htaccesshttpd.conf.user.ini,则可以在任何这些文件中更改此值。

因此您需要添加或修改默认值为2M(2meg)

的参数
upload_max_filesize = 20M  

同时检查post_max_size也是一个好主意,因为这可能会对上传文件的最大尺寸产生影响,请确保post_max_size大于upload_max_filesize因为这应该为你将作为帖子的一部分上传的其他字段留出额外的空间