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]   

> Без описания
Vlador
Отправлено: 23 Декабря, 2012 - 16:05:07
Post Id


Новичок


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


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




Всем привет. почему не работает загрузка нескольких картинок на сервер?

PHP:
скопировать код в буфер обмена
  1. $max_image_width        = 380;
  2.  
  3. $max_image_height       = 600;
  4.  
  5. $max_image_size         = 64 * 1024;
  6.  
  7. $valid_types            =  array("gif","jpg", "png", "jpeg");
  8.  
  9.  
  10.  
  11. if (isset($_FILES["userfile"])) {
  12.  
  13.         $count = count($_FILES["userfile"]['name']);
  14.  
  15.  
  16.  
  17. for($i = 0; $i < $count; $i++){
  18.  
  19.         if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  20.  
  21.                 $filename = $_FILES['userfile']['tmp_name'];
  22.  
  23.                 $ext = substr($_FILES['userfile']['name'],
  24.  
  25.                         1 + strrpos($_FILES['userfile']['name'], "."));
  26.  
  27.                 if (filesize($filename) > $max_image_size) {
  28.  
  29.                         echo 'Error: File size > 64K.';
  30.  
  31.                 } elseif (!in_array($ext, $valid_types)) {
  32.  
  33.                         echo 'Error: Invalid file type.';
  34.  
  35.                 } else {
  36.  
  37.                         $size = GetImageSize($filename);
  38.  
  39.                         if (($size) && ($size[0] < $max_image_width)
  40.  
  41.                                 && ($size[1] < $max_image_height)) {
  42.  
  43.                                 if (@move_uploaded_file($filename, "W:/domains/sajt.com/screen/1.jpg")) {
  44.  
  45.                                         echo 'File successful uploaded.';
  46.  
  47.                                 } else {
  48.  
  49.                                         echo 'Error: moving fie failed.';
  50.  
  51.                                 }
  52.  
  53.                         } else {
  54.  
  55.                                 echo 'Error: invalid image properties.';
  56.  
  57.                         }
  58.  
  59.                 }
  60.  
  61.         } else {
  62.  
  63.                 echo "Error: empty file.";
  64.  
  65.         }
  66.  
  67. }} else {
  68.  
  69.         echo  '<form action="file-upload.php" method="post" enctype="multipart/form-data">
  70.  
  71.  Send these files:<br>
  72.  
  73.  <input name="userfile[]" type="file"><br>
  74.  
  75.  <input name="userfile[]" type="file"><br>
  76.  
  77.  <input type="submit" value="Send files">
  78.  
  79. </form>';
  80.  
  81. }
 
 Top
LShark
Отправлено: 23 Декабря, 2012 - 19:42:11
Post Id



Частый гость


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


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




Объясни, что значит не работает?
Какую ошибку выдает?
Что выдает переменная $_FILES ?
Может у тебя ограничение на сервере на прием размера...


-----
Истина прежде всего в том, что...
 
 Top
kappa
Отправлено: 23 Декабря, 2012 - 20:15:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011  


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




Столько if да еще и elseif нашлось.
Видимо что то перемудрил с кодом.
 
 Top
LShark
Отправлено: 23 Декабря, 2012 - 20:17:14
Post Id



Частый гость


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


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




Сразу вопрос - зачем FOR, когда разумнее foreach ? Тогда и count не понадобится перед этим.

(Добавление)

И вот это мне нравится:
PHP:
скопировать код в буфер обмена
  1. if (@move_uploaded_file($filename, "W:/domains/sajt.com/screen/1.jpg")) {


Ты же их всех под именем 1.jpg в одно и то же место сохраняешь. Причем даже в том случае, если загружали gif или png

Лучше уж либо используй имя файла при добавлении, либо генерируй их рандомом (имена), а расширение приклеивать $ext (ты же его сам определял)...

Ну и намек: W:/domains/sajt.com/screen/1.jpg конечно, локально будет работать, но на удаленном сервере... лучше уж генерируй относительный путь, типа "!temp/"

(Добавление)

Ну и зы:
я обычно не наворачиваю столько ифов с элсами, а просто в начале пишу $erro=""; , а затем последовательно проверяю все пункты, и если ошибка - загоняю в $erro ее сообщение (например:
if (filesize($filename) > $max_image_size) $erro .='Error: File size > 64K.<br>';
if (что то еще) > неправильно) $erro .='Error: И эта хрено тоже кривая.<br>';

Потом в конце проверяю if ($erro!="") {вывожу ошибки на экран} else {вывожу Все ок, бро!}

Меньше вероятность нарваться на проблемы.

(Отредактировано автором: 23 Декабря, 2012 - 20:50:23)



-----
Истина прежде всего в том, что...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB