0

PHP で作成したディレクトリにファイルをアップロードしようとしています。アプリケーションは、ユーザーの UserID に従って、ルート ディレクトリ内にサブディレクトリを作成する必要があります。(例: files/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>";
                    }




                 }

            }

ディレクトリ構造

4

2 に答える 2

0

頭脳、PHPは一度に1つのファイルのアップロードをサポートします。フォームに多くのファイルフィールドがある場合は、 "$ dest =("files/"。$dirname。"{$_ FILES ['files'] ['name' ] [$ key]} ");" ループの中。$Keyはループの外側では空になります。

ループをtemp_nameに含めることはできません。temp_nameは、phpがアップロードするファイルの一時的なコピーです。

于 2013-01-08T17:18:49.833 に答える
0

変更されたコードは次のとおりです。

注: コードのいくつかのエラーも修正しました。比較してください。

<?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>";
    }

} 

?>

于 2013-01-08T17:27:42.787 に答える