上传到新创建的目录

时间:2013-01-09 16:03:06

标签: php mysql session mkdir subdirectory

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

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

  • 检查用户的文件夹是否已存在
  • 如果用户文件夹不存在,请使用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**

任何人都可以帮助我并告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如何为两个呼叫使用相同的结构?

例如:

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

您似乎一方面检查是否存在一个文件/文件夹,并且自../files以来在其他地方创建另一个文件/文件夹!= files/

另外navnav是对的,你应该停止使用相对路径。未来的担忧问题。特别是如果你使用一些框架和网址重新打印。