3

我有一个名为“文件”的目录,其中包含代表用户上传空间的文件夹,例如files/14,“14”是用户的用户 ID。

我正在尝试创建一个简单的脚本,当文件上传时,脚本:

  • 检查用户的文件夹是否已经存在
  • 如果用户文件夹不存在,则使用 UserID 创建一个,否则忽略并继续
  • 将文件上传到新创建的目录(例如 14)或上传到之前创建的用户目录。

这是代码:

<?php 
    include("dbConfig.php");
    $Username = $_SESSION["username"];
    global $userid;
    $Password = $_SESSION["password"];
    $Password = md5($Password);

    $sql = "SELECT UserID FROM users WHERE Username = '".$Username."'";

    $result = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_assoc($result)) {
        $userid = $row['UserID'];
    }

    $dirname =  (string)$userid;
    $filename = ("$dirname" . "/");

    if (!file_exists("../files/" .$filename)) {
        mkdir("files/$dirname", 0775);
    } else {
        if (isset($_FILES['files'])) {
            echo "<div id='files_table'><table class='center'.><tr><td>";  
            foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) {
                $dest = ($filename . "{$_FILES['files']['name'][$key]}");
                move_uploaded_file($tmp_name, $dest );
                echo $_FILES['files']['name'][$key], " uploaded.", "<br>";
            }
        }
    }
?> 

尽管正在创建用户目录,但文件正在上传到根目录 (../files)。

此外,警告没有被忽略,给我这个错误:

**Warning: mkdir(): File exists in C:\xampp\htdocs\Task2PHP\final\upload.php on line 80**

谁能帮助我并告诉我如何解决这个问题?

4

1 回答 1

1

对两个调用使用相同的结构怎么样?

例如:

if (!file_exists("../files/" .$filename)) {
    mkdir("../files/" .$filename, 0775);

您似乎一方面检查一个文件/文件夹是否存在,然后在其他地方创建另一个文件/文件夹,因为../files!=files/

navnav 也是正确的,您应该停止使用相对路径。保证问题在路上。特别是如果您使用一些框架和 url 重写。

于 2013-01-09T16:07:43.887 回答