move_uploaded_file失败,没有错误

时间:2013-02-02 17:24:03

标签: php file-upload permissions

这个问题已被类似地问过几次,但那些答案并不适用于我所遇到的问题。我已经检查了所有。

基本上,函数move_uploaded_file每次都返回false,即使我觉得我连续都有我的鸭子。没有错误,它只返回false。

我已检查过正在上传的文件,但没有错误。

这可能是权限问题,我尝试使用chmod(dir,0777)更改我上传图像的目录。如果是权限问题,我不确定这是否会修复它。编辑 - 检查目录的可写入(dir),并说它是可写的。

我的表单中设置了enctype =“multipart / form-data”属性。

这是我的代码:

    function uniqueName()
    {
    $target = dirname(__FILE__) . '/TestProject/';
    $uid = uniqid();
    $ext = pathinfo($_FILES['photo']['name'], PATHINFO_EXTENSION);

    $_FILES['photo']['name'] = $uid . "." . $ext;

    if(move_uploaded_file($_FILES['photo']['name'], $target . $_FILES['photo']['name']))
        echo("upload succeeded");
    else {
        echo("upload failed");
    }

    return $target . $_FILES['photo']['name'];
    } 

我错过了什么吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

修正了它,move_uploaded_files()的第一个参数需要tmp_name,而不是名称。

答案 1 :(得分:1)

首先关闭,我有时会忘记确保您的表单如下:

<form id="myform" name="myform" action="#" method="post" enctype="multipart/form-data">

这是

的关键部分
enctype="multipart/form-data">

就上传而言,我使用以下内容并且每次都有效:

if ($_FILES["fuImg"]["error"] > 0)
    {
    echo "Error: " . $_FILES["fuImg"]["error"] . "<br>";
    }
else
    {
       move_uploaded_file($_FILES["fuImg"]["tmp_name"], "../img/bands/" . $_FILES["fuImg"]["name"]);
    }