PHP - Создание и загрузка в каталоги

Я пытаюсь загрузить файлы в каталог, созданный с помощью 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>";
                    }




                 }

            }

Структура каталогов


person Brian    schedule 08.01.2013    source источник


Ответы (2)


Мозг, PHP поддерживает загрузку одного файла за раз, если у вас много полей файла в вашей форме, вы должны сохранить "$dest = ("files/" . $dirname . "{$_FILES['files']['name' ][$ключ]}");" в петле. $Key будет пустым вне цикла.

Цикл не может быть на temp_name, temp_name — это временная копия файла, который php собирается загрузить.

person Tahir Iqbal Najam    schedule 08.01.2013
comment
Форма загрузки HTML 5 позволяет загружать несколько файлов одновременно (ограничение размера каждого файла 5 МБ). - person Brian; 08.01.2013

Вот измененный код:

Примечание. Я также исправил некоторые ошибки в вашем коде. Пожалуйста, сравните.

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

} 

?>

person Jirilmon    schedule 08.01.2013
comment
Он по-прежнему показывает те же ошибки, и происходит то же самое. Файлы загружаются в корневой каталог - person Brian; 09.01.2013