Загрузить картинку в php

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

Предупреждение: mkdir (): Файл существует в C: \ wamp \ www \ test \ index.php в строке 21

Мой код здесь:

<body> <form method="post" action="" enctype="multipart/form-data"> <input type="file" name="filename" id="filename" /> <input type="submit" name="pic" /> </form> </body> </html> <?php if(isset($_POST['pic'])){ $comimages = $_FILES['filename']['tmp_name']; $targetpath = mkdir("pageimage/pageid"); $compath = $targetpath."/".$_FILES['filename']['name']; $comFileType=$_FILES['filename']['type']; $comFileSize=$_FILES['filename']['size']; $comFileSize=$comFileSize/1024; if($comFileSize<1000) { $arrFileType=array("image/jpeg","image/png","image/gif","image/bmp"); if(in_array($comFileType,$arrFileType)) { move_uploaded_file($comimages,$compath); } else { echo("invalid file format"); } } else { echo("File Size Error"); } } ?> 

Подсказка находится в ошибке. Каталог, который вы пытаетесь создать с помощью $targetpath = mkdir("pageimage/pageid"); уже существует … так что вы не можете сделать это снова!

Я бы посоветовал сделать проверку наличия файла, прежде чем пытаться это сделать. Для этого есть функция: file_exists ()

Кроме того, mkdir() возвращает boolean (успех или неудача); а не файловый каталог, поэтому вы не сможете использовать переменную $targetpath как вы ожидаете.

Попробуйте это вместо этого …

 $targetpath = "pageimage/pageid"; if (!file_exists($targetpath)) { mkdir($targetpath); } ... 

Заменить

 $targetpath = mkdir("pageimage/pageid"); 

С:

 $targetpath = "pageimage/pageid"; if(!is_dir($targetpath)){ mkdir($targetpath); } 

Таким образом, вы создаете каталог только в том случае, если он не существует. Это обычная ошибка, которую вы получаете, поскольку каталог уже существует.

Вы не можете создать каталог дважды, прежде чем создавать проверку каталога для его существования.

вы можете использовать is_dir() и is_writeable() чтобы быть уверенным, что вы можете писать в этот каталог.

см .: http://uk.php.net/manual/en/function.is-writable.php

http://uk.php.net/is_dir

замещать

 $targetpath = mkdir("pageimage/pageid"); 

С..

 $targetpath = if(is_dir("pageimage/pageid")) ? "pageimage/pageid" : mkdir("pageimage/pageid"); 

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

Первый вопрос: где линия 21? В любом случае, вы должны проверить, существует ли каталог, прежде чем создавать его. Очевидно, что это уже существует в вашем случае (папки здесь технически считаются файлами, см. Например is_dir() ). Используйте file_exists() . Также будьте осторожны, если вы создаете структуру (папку и папку внутри), вы должны использовать параметр $recursive , см. PHP doc: http://php.net/manual/fr/function.mkdir.php