1

我在尝试使用该功能时收到了一些错误:

move_upload_file()

. 我已经尝试研究它,但我找不到任何解决方案。我收到的错误代码如下:

警告:move_uploaded_file(example.com/users/用户名在这里/test.png):无法打开流:第53行的members.php中没有这样的文件或目录

警告:move_uploaded_file(): Unable to move '/tmp/phpW2QDD0' to 'example.com/users/ username goes here /test.png' in members.php on line 53

我想做的是将要上传到文件夹的图像放入文件夹users内的文件夹中。我希望该文件夹的名称与上传照片的人的用户名相同。

这是图片上传器的PHP:

if (isset($_POST['profilepicture']))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        if (file_exists("example.com/users/$username/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["file"]["tmp_name"],"example.com/users/$username/" . $_FILES["file"]["name"]);
        }
    }
}

这是上传图片表单:

<form action='members.php' method='POST' enctype='multipart/form-data'>
<label for="file">Profile Picture</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="profilepicture" value="Upload">

</form>

为什么我会收到这些错误?如果用户在网站文​​件夹中没有文件夹,此功能是否会创建一个新文件夹?

我很感激任何帮助,谢谢!

4

3 回答 3

1

重新检查您的代码以查看您正在使用变量 $username 创建目录

于 2013-06-19T07:43:15.223 回答
0

有3件事你需要改变

第一

代替

example.com/users/username goes here/test.png

$_SERVER['DOCUMENT_ROOT'].'/users/username goes here/test.png'

第二

确保目标文件夹存在(如果在移动之前没有创建它)

if (!file_exists($_SERVER['DOCUMENT_ROOT'].'/users/username 在这里/')) { mkdir($_SERVER['DOCUMENT_ROOT'].'/users/username 在这里/'); }

第三

提供在目标文件夹上写入所需的权限。

chmod 777 /var/www/users/

如果您在基于 Linux 的服务器上应该可以工作

于 2013-06-19T07:53:42.887 回答
0

如果不存在则创建新目录。然后将该文件移动到该文件夹​​。

if (!file_exists('example.com/users/'.$username)) {
    mkdir('example.com/users/'.$username);
}

您的代码必须是这样的:

if (isset($_POST['profilepicture']))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        if (file_exists("example.com/users/".$username . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
          if (!file_exists('example.com/users/'.$username)) 
          {
              mkdir('example.com/users/'.$username);
          }
            move_uploaded_file($_FILES["file"]["tmp_name"],"example.com/users/$username/" . $_FILES["file"]["name"]);
        }
    }
}
于 2013-06-19T07:38:53.067 回答