Как создать пункт назначения (Папка) в PHP при использовании move_uploaded_file()?

Я хочу загрузить файлы с помощью PHP, и я использую move_uplload_files, чтобы скопировать их в нужную папку, которую я хочу, все работает отлично:

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'))
die("success");
else
die("error");

Но когда я пробую это

$rand =  chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
die("success");
else
die("error");

Я получу ошибку, и похоже, что move_uploaded_files не может создавать папки. Как я могу это сделать?

В основном я ищу способ сделать это, как file_put_contents(), который создает путь, если не существует.

Ответы

Ответ 1

Используйте mkdir().

Если вам нужно создать несколько папок, например, передав a/b/c, установите третий аргумент TRUE.

Вы можете проверить, есть ли он там, и добавить, если не так....

$path = 'abc';

if ( ! is_dir($path)) {
    mkdir($path);
}

Ответ 2

Используйте что-то вроде этого:

$folder = "uploads"; 
if(!is_dir($folder)) mkdir($folder);

is_dir() проверяет, существует ли папка.

Ответ 3

Создайте каталог сначала, используя mkdir()

  $rand =  chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
    mkdir('./uploades/'.$rand);
    if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
    die("success");
    else
    die("error");

Ответ 4

Это работает для меня:

$path = "upload/";
$name = $_FILES["file"]["name"];
// Remove dangerous characters from filename.
$name = str_replace('..', '', $name);
$name = str_replace('/', '', $name);
$name = str_replace('\\', '', $name);

if (($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
&& ($_FILES["file"]["size"] < 2000000)) {
      if ($_FILES["file"]["error"] > 0) {
        echo "Error " . $_FILES["file"]["error"] . "<br>";
      } else {
        if(file_exists($path.$name)){
            echo "$path$name already exists. ";
        } else {                
            @mkdir($path, 0666, true);  // Create non-executable upload folder(s) if needed.
            move_uploaded_file($_FILES["file"]["tmp_name"], $path.$name);
            echo "Stored in: $path$name";
        }
    }
} else {
    echo "Invalid file. Allowed are JPG smaller than 2 MB.";
}

Ответ 5

if($_FILES['file_up']['type']=='image/jpeg' || $_FILES['file_up']['type']=='image/png' || $_FILES['file_up']['type']=='image/gif')
{
    move_uploaded_file($_FILES['file_up']['tmp_name'],'uploads/'.time().$_FILES['file_up']['name']);
}
else
{
    echo "Upload only image file..";
}