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]   

> Без описания
Шмайсер
Отправлено: 29 Июня, 2011 - 09:52:08
Post Id


Новичок


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


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




Всем добрый день. Есть такая проблема. Загружаю изображения на сервер, вот код обработчика
PHP:
скопировать код в буфер обмена
  1.  
  2. //add photo  
  3.  
  4. $errors = "";
  5. $msg = "";
  6. $fileElementName = 'imgprodkv';
  7. $i = 0;
  8. $files_count = sizeof(@$_FILES[$fileElementName]["name"]);
  9. for ($i = 0; $i < $files_count-1; $i++) {
  10.  
  11. if(!empty($_FILES[$fileElementName]['error'][$i]))
  12.         {
  13.                 switch($_FILES[$fileElementName]['error'][$i])
  14.                 {
  15.  
  16.                         case '1':
  17.                                 $error = 'размер загруженного файла превышает размер установленный параметром upload_max_filesize  в php.ini ';
  18.                                 break;
  19.                         case '2':
  20.                                 $error = 'размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. ';
  21.                                 break;
  22.                         case '3':
  23.                                 $error = 'загружена только часть файла ';
  24.                                 break;
  25.                         case '4':
  26.                                 $error = 'файл не был загружен (Пользователь в форме указал неверный путь к файлу). ';
  27.                                 break;
  28.                         case '6':
  29.                                 $error = 'неверная временная дирректория';
  30.                                 break;
  31.                         case '7':
  32.                                 $error = 'ошибка записи файла на диск';
  33.                                 break;
  34.                         case '8':
  35.                                 $error = 'загрузка файла прервана';
  36.                                 break;
  37.                         case '999':
  38.                         default:
  39.                                 $error = 'No error code avaiable';
  40.                 }
  41.         }
  42.         elseif(empty($_FILES[$fileElementName]['tmp_name'][$i]) || $_FILES[$fileElementName]['tmp_name'][$i] == 'none')
  43.         {
  44.                 $error = 'No file was uploaded..';
  45.         }
  46.         else
  47.         {
  48.         if (file_exists("uploads/prod/" . $_FILES[$fileElementName]['name'][$i])){
  49.                         $error =$_FILES[$fileElementName]['name'][$i] . " уже существует. ";
  50.                 }
  51.                 else{
  52.                         $msg .= " File Name: " . $_FILES[$fileElementName]['name'][$i] . "<br/>";
  53.                         $msg .= " File Type: " . $_FILES[$fileElementName]['type'][$i] . "<br/>";
  54.                                 $msg .= " File Size: " . (@filesize($_FILES[$fileElementName]['tmp_name'][$i])/ 1024)."Kb";
  55.                                
  56.                                 $upl_path = 'uploads/prod/';
  57.                                 $thumb_path = 'uploads/prod/thumb/';
  58.                                 $source = $_FILES[$fileElementName]['tmp_name'][$i];
  59.                                 $target = $upl_path. $_FILES[$fileElementName]['name'][$i];
  60.                                 move_uploaded_file($source, $target);
  61.                                
  62.                                 $new_name = 'thumb_'. $_FILES[$fileElementName]['name'][$i];
  63.                                 $resource_src = $thumb_path.$new_name;
  64.                                 //получаем параметры загруженного файла
  65.                 $params=getimagesize($target);
  66.                                
  67.                                 switch($params[2]){
  68.                 case 1:$p_source=imagecreatefromgif($target);break;
  69.                 case 2:$p_source=imagecreatefromjpeg($target);break;
  70.                                    }
  71.                                                                    //если высота больше ширины
  72.                                    //вычисляем новую ширину
  73.                                    if($params[1]>$params[0]){
  74.                                    $newheight=70;
  75.                                    $newwidth=floor($newheight*$params[0]/$params[1]);
  76.                                                              }
  77.                                   //если ширина больше высоты
  78.                                   //вычисляем новую высоту
  79.                                   if($params[1]<$params[0]){
  80.                                   $newwidth=70;
  81.                                   $newheight=floor($newwidth*$params[1]/$params[0]);
  82.                                                             }
  83.                                                             //создаем миниатюру загруженного изображения
  84.                                $resource=imagecreatetruecolor($newwidth,$newheight);
  85.                                imagecopyresampled($resource,$p_source,0,0,0,0,
  86.                                $newwidth,$newheight,$params[0],$params[1]);
  87.                                imagejpeg($resource,$resource_src,100);//80 качество изображения
  88.  


вот код формы
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4.          
  5. $('.MultiFile').MultiFile({
  6.         accept:'jpg|gif|bmp|png|rar', max:10, STRING: {
  7.                 remove:'удалить',
  8.                 file:'$file',
  9.                 selected:'Выбраны: $file',
  10.                 denied:'Неверный тип файла: $ext!',
  11.                 duplicate:'Этот файл уже выбран:\n$file!'
  12.         }
  13. });              
  14.          
  15. $("#loading").ajaxStart(function(){
  16.         $(this).show();
  17. })
  18. .ajaxComplete(function(){
  19.         $(this).hide();
  20. });
  21.          
  22.  
  23. $('#uploadForm').ajaxForm({
  24.         beforeSubmit: function(a,f,o) {
  25.                 o.dataType = "html";
  26.                 $('#uploadOutput').html('Submitting...');
  27.         },
  28.         success: function(data) {
  29.                 var $out = $('#uploadOutput');
  30.                 $out.html('Form success handler received: <strong>' + typeof data + '</strong>');
  31.                 if (typeof data == 'object' && data.nodeType)
  32.                         data = elementToString(data.documentElement, true);
  33.                 else if (typeof data == 'object')
  34.                         data = objToString(data);
  35.                 $out.append('<div><pre>'+ data +'</pre></div>');
  36.         }
  37. });
  38. });
  39. </script>
  40.                         <form id="uploadForm" name="send_vacancy" action="add_prod_kv.php" method="POST" enctype="multipart/form-data">
  41.                                                 <input name="MAX_FILE_SIZE" value="1000000" type="hidden"/>
  42.                         Загрузка изображения 1<br>
  43.           <input id="fileToUpload" class="MultiFile" type="file" name="imgprodkv[]" size= "63" ><br>
  44.                   <img id="loading" src="template/img111/loading.gif" style="display:none;"/>  
  45.            <div id="uploadOutput"></div></form>
  46.  


Некоторое пояснение по JS. Скрипт работает таким образом. Есть всегда 1 поле type="file", при загрузке изображений имена файлов выводятся в браузере аяксом, после загрузки 10-го изображения кнопка ЗАГРУЗИТЬ становится неактивной.
Проблема в следующем: при загрузке 1 или 9 изображений все нормально, но если пользователь загружает 10 картинок ( в джаваскрипте установлен ограничитель на 10 картинок) то на сервер грузятся 9.Соответственно, автоматически созадется и 9 превью.
Самое интересное, что в базу записываются имена 10 файлов!.
Как ни пробовал - либо вообще не работает, либо работает как я описал.
Думаю, надо вот тут как то грамотно поправить
PHP:
скопировать код в буфер обмена
  1.  
  2. $i = 0;
  3. $files_count = sizeof(@$_FILES[$fileElementName]["name"]);
  4. for ($i = 0; $i < $files_count-1; $i++) {*************}
  5.  

Подскажите, если не трудно!
Спасибо.
 
 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