Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание папки и помещение туда картинки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
LORDIF
Отправлено: 30 Декабря, 2010 - 17:09:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Появилась проблема, нужно создать папку и поместить туда файл из инпута.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. if(isset($_POST["submit"]))
  3. {
  4. $folder = str_replace($aSearch,$aReplace,$_POST["folder"]);
  5. $res = mkdir('test/'.$folder, 0777);
  6. if($res == TRUE)
  7. {echo 'Папка успешно создана!<br>';}
  8. else {echo "Папка не создана!<br>";}
  9. $res = move_uploaded_file($_FILES['file']['tmp_name'], 'test/'.$folder.'/'.$_FILES['file']['name']);
  10. if($res == TRUE)
  11. {echo 'Файл успешно загружен!';}
  12. else {echo "Файл не загружен!";}
  13. }
  14.  
  15. else
  16. {
  17.                 ?>
  18.  
  19.                 <html>
  20.  
  21.                 <head>
  22.                 <title></title>
  23.  
  24.                 </head>
  25.  
  26.                 <body>
  27.                 <form action="test2.php" method="post">
  28.                 <input type="text" name="folder" size="64" /><br><br><br>
  29.                 <input type="file" name="file"><br><br><br><br>
  30.                 <input name="submit" type="submit"  value="Добавить">
  31.                 </form>
  32.                 </body>
  33.  
  34.                 </html>
  35. <?php }?>

Папка создается, а файл не перемещается (возможно нужно было использовать ф-ю copy(), если да, то покажите пожалуста как она работает)
Подскажите пожалуста как исправить ошибку

(Отредактировано автором: 30 Декабря, 2010 - 17:13:19)

 
 Top
Мелкий Супермодератор
Отправлено: 30 Декабря, 2010 - 17:16:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А что, разве должен?
Сделайте var_dump($_FILES) на всякий случай, но на сколько мне известно, отсылка файла возможна только если у формы указано enctype=multipart/form-data
Самое начало статьи http://php.su/phphttp/?uploads


-----
PostgreSQL DBA
 
 Top
LORDIF
Отправлено: 30 Декабря, 2010 - 17:18:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




var_dump($_FILES) = array(0) { }
(Добавление)
Помогите плиз написать нормальный рабочий код
 
 Top
grefon
Отправлено: 30 Декабря, 2010 - 17:26:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Укажите у формы enctype как написал Мелкий. Без этого файлы отсылаться не будут.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
LORDIF
Отправлено: 30 Декабря, 2010 - 17:43:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Спасибо, все получилось, но появился еще 1 вопрос, как загружаемый файл загрузить с другим названием, например название file.
 
 Top
OrmaJever Модератор
Отправлено: 30 Декабря, 2010 - 19:53:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Файлы загружаются в tmp папку на сервере. После завершения работы скрипт этот файл удаляется. В любом случае Во в скрипте файл нужно копировать с папки tmp куда-либо, а вовремя копирования название изменить не сложно! copy()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 30 Декабря, 2010 - 20:50:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




LORDIF пишет:
Появился еще 1 вопрос, как загружаемый файл загрузить с другим названием, например название file
Для определения имени целевого файлового объекта на основе которого будет осуществлено сохранения загруженного содержимого -достаточно использование значения аргумента функции copy указывающего назначение копируемого файла


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
LORDIF
Отправлено: 31 Декабря, 2010 - 10:43:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




А можно как-нибудь узнать вообще какого типа посылается файл, например нужно сделать проверку на doc и txt файлы
(Добавление)
Вот нашел код, как считаете он нормальный
CODE (htmlphp):
скопировать код в буфер обмена
  1. function getExtension1($filename) {
  2.     return end(explode(".", $filename));
  3.   }
 
 Top
Мелкий Супермодератор
Отправлено: 31 Декабря, 2010 - 12:36:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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

Если известны бинарные форматы, то можете читать заголовок файла и искать там нужные фрагменты.
Но в общем случае поможет mime_content_type


-----
PostgreSQL DBA
 
 Top
MrDigriz
Отправлено: 20 Июня, 2011 - 02:30:21
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Огромное спасибо вам и гуглу!
(Добавление)
кусочек кода про картинки, может пригодиться:
PHP:
скопировать код в буфер обмена
  1. function CreateImage(){
  2.         if (($this->filetype=='image/jpeg')||($this->filetype=='image/pjpeg')){$this->image=imagecreatefromjpeg($this->filepath . $this->filename);}
  3.         if (($this->filetype=='image/png')){$this->image=imagecreatefrompng($this->filepath . $this->filename);}
  4.         if (($this->filetype=='image/gif')){$this->image=imagecreatefromgif($this->filepath . $this->filename);}
  5. }
 
 Top
Slavenin
Отправлено: 20 Июня, 2011 - 10:59:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




я делал загрузку файла так:
PHP:
скопировать код в буфер обмена
  1. //дирректория загрузки
  2.     $dir = 'upload/';
  3. //имя файла
  4.     $tmp = explode(".", $name);
  5.     $f = $tmp[0];
  6. //чтобы закрыть дырку насильно изменим разрешение файла
  7.     $file = $dir .$f ."csv";
  8. //перемещаем файл из временной дмрректории в указанную
  9.     if(!move_uploaded_file($name, $file))
  10.     {
  11.       echo 'ошибка';
  12.       exit();
  13.     }

но так как у меня только один формат то я насильно менял расширения загружаемых файлов. Проверка mime типа(можно посмотреть в заголовке, или воспользоваться функцией getimagesize()) не гарантирует безопасности загружаемых файлов, так как любой из них можно открыть и написать внутрь любой код, который в момент загрузки файла будет выполнен. Для того чтобы изменить имя файла можно использовать md5 хэш который записать в переменную $f. равно как и определенный mime не гарантирует загрузку именно картинки, так что надо проверять все что только можно, а не останавливатсья на чем-то одном Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB