1

类似地问过这个问题几次,但这些答案不适用于我遇到的问题。我都检查过了。

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

我检查了正在上传的文件,它没有错误。

可能是权限问题,我尝试将上传图片的目录更改为使用 chmod(dir, 0777)。如果这是权限问题,我不确定这是否会解决它。编辑 - 检查目录的 iswritable(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'];
    } 

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

4

2 回答 2

2

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

于 2013-02-02T18:48:15.420 回答
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"]);
    }
于 2013-02-02T17:28:26.600 回答