2013-04-17 4 views
1

У меня проблемы с этим. Думал, что это будет проще, но, оказывается, расстроится. Все, что я пытаюсь сделать, это иметь текстовое поле, в котором я могу ввести имя нового каталога, проверить, существует ли этот каталог, и если он не создается. Я нашел около 50 других людей с почти одним и тем же кодом, поэтому я подумал, что это правильно, но я продолжаю получать Directory в соответствии с инструкцией if.Проверьте, существует ли каталог, создайте каталог

В конце концов я хочу связать это с моим сценарием загрузки файлов.

Вот insert.php

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <p> 
    <label for="directory">Directory:</label> 
    <input value="<?php if ($_POST && $errors) { 
    echo htmlentities($_POST['directory'], ENT_COMPAT, 'UTF-8'); 
}?>" type="text" name="directory" id="directory" /> 
    </p> 
    <p> 
    <input type="submit" name="insert" id="insert" value="insert" /> 
    </p> 
</form> 

А вот Post.php

try { 
if (isset($_POST['insert'])) { 
    $directory = $_POST['directory']; 
    $photo_destination = 'image_upload/'; 
    $path = $photo_destination; 
    $new_path = $path . $directory; 
    $mode = 0755; 
    if(!is_dir($new_path)) { 
     echo "The Directory {$new_path} exists"; 
     } else { 
      mkdir($new_path , 0777); 
      echo "The Directory {$new_path} was created"; 
      } 
     } 
} 
+1

У вас есть '/ каталог scripts' в вашей системе? Это похоже на ошибку. – tadman

+0

Просьба предоставить вывод 'ls -lh/scripts' – hjpotter92

+0

Вам действительно нужно существовать/созданное сообщение? Если не просто пойти вперед и попытаться создать его БЕЗ проверки, существует ли он или нет. 1 syscall vs. 2, и вам гарантировано создать каталог даже в случае с редким случаем гонки, когда он будет удален сразу после того, как вы проверили его. –

ответ

10

Изменить это:

if(!is_dir($new_path)) { 
    echo "The Directory {$new_path} exists"; 
    } 

к этому:

if(is_dir($new_path)) { 
    echo "The Directory {$new_path} exists"; 
    } 

Try и сказать мне результат :)

+0

Теперь я получаю сообщение «Каталог был создан», но все еще не создается каталог. Это в системе Windows, мне нужно начинать все с буквы драйвера C:/или создает ли каталог, начиная с того места, где запускается скрипт? – tunedin

+2

Вы используете символ «/» в начале вашего пути и указываете серверу, что он должен начинаться с корня вашего сервера, затем вычислите путь таким образом, я думаю, что ваша папка создана, но не там, где вы хотите, но в корневой каталог сервера в папке «/ scripts/image_upload /», поэтому, если вы хотите, чтобы сценарий выполнял вычисление пути из каталога, в котором работает скрипт, просто опускайте/с начала вашего пути, и вы сообщите серверу в таким образом, что путь, на который я указываю, находится рядом с файловым скриптом, который запускает создание этой папки. @tunedin –

+0

Ок, подумал, что это часть! Спасибо за правильный ответ. Простая ошибка – tunedin

1

Вместо использования is_dir в блоке, если вы можете использовать file_exists. Поскольку file_exists - это функция проверки наличия файла или нет. Для того же, вы можете также обратиться к http://php.net/manual/en/function.file-exists.php

+1

Правильный способ проверить наличие файла и каталога - это только функция file_exists. Полезно знать – 2013-04-17 02:31:09

+0

Нет. Я не хочу проверять, существует ли файл, хотя я знаю, что вы также можете использовать его для каталогов. Все, что я хочу сделать здесь, это создать каталог, так как он будет новым каталогом каждый раз, когда в нем не будет файлов, поэтому его половина полна половины пустой ситуации – tunedin

1

Попробуйте

if(is_dir($new_path)) { 
    echo "The Directory {$new_path} exists"; 
} 
0

Let кто-то хочет создать вложенную папку,
с именем года под /uploads папку
, то он/она хочет создать другую подпапку под /uploads/<year_name_folder>/,
имени project_number.

$yearfolder = date('y'); 
if (!file_exists('uploads/'.$yearfolder)) { 
     mkdir("uploads/".$yearfolder); 
    } 
*// Folder named by year has been created.* 

$project_number = Any Unique field ,Come from database or anywhere ! 
$target_directory = mkdir("uploads/".$yearfolder."/".$project_number); 

*// project number wise folder also created. 
// If project number is not unique do check like year folder. I think every project number is unique.* 

$target_dir = "uploads/$yearfolder/$project_number/"; 
*//my target dir has created where my document or pic whatever will be uploaded.* 

Now Upload ! Woo 
$target_file = $target_dir.($_FILES["file"]["name"]); 
0
<?php 
$dirname = "small"; 
$filename = "upload/".$dirname."/"; 

if (!is_dir($filename)) { 
    mkdir("upload/" . $dirname, 0777, true); 
    echo "The directory $dirname was successfully created."; 
    exit; 
} else { 
    echo "The directory $dirname exists."; 
} 
?> 
Смежные вопросы