Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: функция mkdir: как поместить в созданную папку файлы?
 
 автор: ladan   (12.12.2011 в 11:50)   письмо автору
 
 

Все привет, не подскажите как с этой функцией можно создавать новые директории и в них закидывать файлы?

Пока что получается просто создавать папки с теми названиями, что вводит человек из формы:


<form action="" method="get">
Имя папки: <input name="name" type="text"><br>
<input name="" type="submit" value="отправить">

</form>

<?php 
if(isset($_GET['name'])) {$name $_GET['name'];} if (empty($name)) {exit();}


$a mkdir("$name".time(), 0777);

if(
$a) {echo "Директория создалась";} else {echo "ошибка";}
?>


но создавать просто так папки не интересно, по этому попробовал туда еще вкладывать файл из формы:


<form method="post" enctype="multipart/form-data">
    <p><input name="file" size="18" type="file" value=""></p>
        <p>Имя папки: <input name="name"  type="text"></p>
    <p><input name="submit" type="submit" value="Загрузить"></p>
</form>
  <br>

<?php
if(empty($_POST['name'])) {exit("Поле name не заполнено!");}
if(isset(
$_POST['name'])) {$name $_POST['name'];}


$file $_FILES['file']['tmp_name'];
$filename $_FILES['file']['name'];
if(!empty(
$file))
{
  
ini_set('memory_limit''32M'); 
  
$maxsize "100000000";
  
$extentions = array( "gif","txt","tpl","jpg","jpeg","png","zip""rar","7z","tif","psd","swf","flv","avi","mpeg","mp4","mp3","wav""ogg","ogm","doc","xls","ppt");
  
$size filesize ($_FILES['file']['tmp_name']); 
  
$type strtolower(substr($filename1+strrpos($filename,".")));
  
$new_name 'file-'.time().'.'.$type
  if(
$size $maxsize)
  { 
     echo 
"Файл больше 100 мб. Уменьшите размер вашего файла или загрузите другой. <br><a href='' onClick=window.close();>Закрыть окно</a>";
  } 
  elseif(!
in_array($type,$extentions)) 
  { 
    echo 
' <b>Файл имеет недопустимое расширение</b>. Допустимыми являются форматы изображений, видеофайлов, флэш-роликов и текстовых документов. <br>';
  } 
  else 
  { 
/*Создаем папку*/
$folder mkdir($name0777);
    if (
copy($file$folder.'/'.$new_name))
      {echo 
"Файл загружен!";}

    else {echo 
"Файл НЕ был загружен.";}
  } 
}

?>



а в этом скрипте папка создается, а файл пытается записаться по адресу "Warning: copy(1/file-1323679126.jpg)", ищет папку с названием "1". Почему так происходит? Буду благодарен, если скажите ошибки :)

  Ответить  
 
 автор: Sfinks   (12.12.2011 в 14:46)   письмо автору
 
   для: ladan   (12.12.2011 в 11:50)
 

1. в mkdir чмод 777 можно не указывать. Это и так значение по умолчанию. Но это не ошибка.
2. мкдир не возвращает имя дирректории, а возвращает информацию о том была ли попытка создать дирректорию удачной, т.е. bool (true либо false). А т.к. (string)true == "1", то вы в итоге получаете 1/file-1323679126.jpg. Нужно так:
<?
  
/*Создаем папку*/ 
  
if (!mkdir($name)){
    die (
"ошибка создания папки");
  } 
  if (
copy($file$name.'/'.$new_name)) 
    {echo 
"Файл загружен!";} 
  else
    {echo 
"Файл НЕ был загружен.";} 
  }
?>

  Ответить  
 
 автор: ladan   (12.12.2011 в 17:39)   письмо автору
 
   для: Sfinks   (12.12.2011 в 14:46)
 

Спасибо! все заработало :) Просто привык присваивать переменным только одни значения :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования