【问题标题】:PHP - Creating and uploading to directoriesPHP - 创建和上传到目录
【发布时间】:2013-01-08 17:02:58
【问题描述】:

我正在尝试将文件上传到使用 PHP 创建的目录。应用程序应根据用户的 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'];

                }


                echo $userid;

                $dirname = (string)$userid;

                $filename = ("/folder/" . "$dirname" . "/");

                if (!file_exists($filename))

                {

                            mkdir("files/$dirname", 0777);

                            if (isset($_FILES['files'])) {

                            echo "<div id='files_table'><table class='center'.><tr><td>";

                            $dest = ("files/" . $dirname . "{$_FILES['files']['name'][$key]}");

                            foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){

                            move_uploaded_file($tmp_name, $dest );

                            echo $_FILES['files']['name'][$key], " uploaded.", "<br>";

                            }

                 }else {


                        if (isset($_FILES['files'])) {

                        echo "<div id='files_table'><table class='center'.><tr><td>";

                            $dest = ("files/" . $dirname . "{$_FILES['files']['name'][$key]}");

                            foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){

                            move_uploaded_file($tmp_name, $dest );

                            echo $_FILES['files']['name'][$key], " uploaded.", "<br>";


                    }
                    echo "</td></tr></table></div><br><br>";
                    }




                 }

            }

【问题讨论】:

    标签: php mysql session mkdir subdirectory


    【解决方案1】:

    大脑, PHP 支持一次上传一个文件,如果表单中有多个文件字段,则应保留 "$dest = ("files/" . $dirname . "{$_FILES['files']['name'][ $key]}");"在循环。 $Key 在循环外将为空。

    循环不能在 temp_name 上,temp_name 是 php 将要上传的文件的临时副本。

    【讨论】:

    • HTML 5 上传表单允许您一次上传多个文件(每个文件的大小限制为 5mB)
    【解决方案2】:

    这是修改后的代码:

    注意:我也更正了您代码中的一些错误。请比较。

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

    ?>

    【讨论】:

    • 它仍然显示相同的错误并且发生相同的事情。文件上传到根目录
    猜你喜欢
    • 2021-05-25
    • 2012-09-23
    • 2020-12-21
    • 2014-11-10
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多