Новичок
Покинул форум
Сообщений всего: 38
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
|
Всем добрый день. Есть такая проблема. Загружаю изображения на сервер, вот код обработчика
PHP:
скопировать код в буфер обмена
//add photo $errors = ""; $msg = ""; $fileElementName = 'imgprodkv'; $i = 0; $files_count = sizeof(@$_FILES[$fileElementName]["name"]); for ($i = 0; $i < $files_count-1; $i++) { if(!empty($_FILES[$fileElementName]['error'][$i])) { switch($_FILES[$fileElementName]['error'][$i]) { case '1': $error = 'размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini '; break; case '2': $error = 'размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. '; break; case '3': $error = 'загружена только часть файла '; break; case '4': $error = 'файл не был загружен (Пользователь в форме указал неверный путь к файлу). '; break; case '6': $error = 'неверная временная дирректория'; break; case '7': $error = 'ошибка записи файла на диск'; break; case '8': $error = 'загрузка файла прервана'; break; case '999': default: $error = 'No error code avaiable'; } } elseif(empty($_FILES[$fileElementName]['tmp_name'][$i]) || $_FILES[$fileElementName]['tmp_name'][$i] == 'none') { $error = 'No file was uploaded..'; } else { if (file_exists("uploads/prod/" . $_FILES[$fileElementName]['name'][$i])){ $error =$_FILES[$fileElementName]['name'][$i] . " уже существует. "; } else{ $msg .= " File Name: " . $_FILES[$fileElementName]['name'][$i] . "<br/>"; $msg .= " File Type: " . $_FILES[$fileElementName]['type'][$i] . "<br/>"; $msg .= " File Size: " . (@filesize($_FILES[$fileElementName]['tmp_name'][$i])/ 1024)."Kb"; $upl_path = 'uploads/prod/'; $thumb_path = 'uploads/prod/thumb/'; $source = $_FILES[$fileElementName]['tmp_name'][$i]; $target = $upl_path. $_FILES[$fileElementName]['name'][$i]; $new_name = 'thumb_'. $_FILES[$fileElementName]['name'][$i]; $resource_src = $thumb_path.$new_name; //получаем параметры загруженного файла switch($params[2]){ } //если высота больше ширины //вычисляем новую ширину if($params[1]>$params[0]){ $newheight=70; $newwidth=floor($newheight*$params[0 ]/$params[1 ]); } //если ширина больше высоты //вычисляем новую высоту if($params[1]<$params[0]){ $newwidth=70; $newheight=floor($newwidth*$params[1 ]/$params[0 ]); } //создаем миниатюру загруженного изображения $newwidth,$newheight,$params[0],$params[1]); imagejpeg($resource,$resource_src,100 );//80 качество изображения
вот код формы
CODE ( html):
скопировать код в буфер обмена
<script type="text/javascript"> $(document).ready(function(){ $('.MultiFile').MultiFile({ accept:'jpg|gif|bmp|png|rar', max:10, STRING: { remove:'удалить', file:'$file', selected:'Выбраны: $file', denied:'Неверный тип файла: $ext!', duplicate:'Этот файл уже выбран:\n$file!' } }); $("#loading").ajaxStart(function(){ $(this).show(); }) .ajaxComplete(function(){ $(this).hide(); }); $('#uploadForm').ajaxForm({ beforeSubmit: function(a,f,o) { o.dataType = "html"; $('#uploadOutput').html('Submitting...'); }, success: function(data) { var $out = $('#uploadOutput'); $out.html('Form success handler received: <strong>' + typeof data + '</strong>'); if (typeof data == 'object' && data.nodeType) data = elementToString(data.documentElement, true); else if (typeof data == 'object') data = objToString(data); $out.append('<div><pre>'+ data +'</pre></div>'); } }); }); </script> <form id="uploadForm" name="send_vacancy" action="add_prod_kv.php" method="POST" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" value="1000000" type="hidden"/> Загрузка изображения 1<br> <input id="fileToUpload" class="MultiFile" type="file" name="imgprodkv[]" size= "63" ><br> <img id="loading" src="template/img111/loading.gif" style="display:none;"/> <div id="uploadOutput"></div></form>
Некоторое пояснение по JS. Скрипт работает таким образом. Есть всегда 1 поле type="file", при загрузке изображений имена файлов выводятся в браузере аяксом, после загрузки 10-го изображения кнопка ЗАГРУЗИТЬ становится неактивной.
Проблема в следующем: при загрузке 1 или 9 изображений все нормально, но если пользователь загружает 10 картинок ( в джаваскрипте установлен ограничитель на 10 картинок) то на сервер грузятся 9.Соответственно, автоматически созадется и 9 превью.
Самое интересное, что в базу записываются имена 10 файлов!.
Как ни пробовал - либо вообще не работает, либо работает как я описал.
Думаю, надо вот тут как то грамотно поправить
Подскажите, если не трудно!
Спасибо.
|