помогите разобрать код!
есть скрипт загрузки изображения
при добавлении изображения в базу данных надо добавить два параметра с переменными $login $idUserAdv из файла add_adv.php так вот ссылка на сам файл http://localhost/angren/index.php?view=add_adv через view можно и login и idUserAdv вытащить. но вот проблема в том что есть отдельный файл upload.php и в него я никак не могу передать эти две переменные. 1 страница это наш add_adv.php для наглядного примера <?php if(chekUser($_SESSION["login"], $_SESSION["password"])) { $getUserData = getValidRegLogin($_SESSION["login"]); for($i = 0; $i < count($getUserData); $i++) { $id = $getUserData[$i]["id"]; $tel = $getUserData[$i]["tel"]; $email = $getUserData[$i]["email"]; $username = $getUserData[$i]["username"]; } if(!empty($_POST["add_advert"])) { $date = date('YmdHis'); $login = $_SESSION["login"]; $title = htmlspecialchars($_POST["title"]); $price = htmlspecialchars($_POST["price"]); $description = htmlspecialchars($_POST["description"]); $list = htmlspecialchars($_POST["list"]); $sub_cat = htmlspecialchars($_POST["sub_cat"]); $valuta = htmlspecialchars($_POST["valuta"]); $success = addAdvert($date, $apend, $login, $title, $price, $description, $list, $sub_cat, $valuta); $getUserAdvert = getUserAdvert($login, $date, $price, $title); $idUserAdv = $getUserAdvert['id']; ?> <script> document.location.href = 'index.php?view=advert&id=<?=$idUserAdv?>'; </script> } ?> ?> <form type="add_adv" class="submit" enctype="multipart/form-data" action="" method="post"> <div class="add_adv "> <div class="p">Полное описание</div><textarea name="description" cols="40" rows="5"></textarea> <div class="p">Добавить изображения</div> <div id="drop-files" ondragover="return false"> <p>Перетащите изображение сюда</p>макс 6 изображений<br /> <form id="frm"> <input type="file" id="uploadbtn" multiple /> </form> </div> <!-- Область предпросмотра --> <div id="uploaded-holder"> <div id="dropped-files"> <!-- Кнопки загрузить и удалить, а также количество файлов --> <div id="upload-button"> <center> <div class="clear"></div> <a href="#" class="upload">Загрузить</a> -эта кнопка не нужна. нужно чтобы при отправке формы добавлялись картинки <a href="" class="delete">Удалить все</a> <span>0</span> <!-- Прогресс бар загрузки --> <div id="loading"> <div id="loading-bar"> <div class="loading-color"></div> </div> <div id="loading-content"></div> </div> </center> </div> </div> </div> <!-- Список загруженных файлов --> <div id="file-name-holder"> <ul id="uploaded-files"> <h1>Загруженные файлы</h1> </ul> </div> <input type="submit" name="add_advert" class="add_button" value="Опубликовать объявление"> вот кнопка отправки формы </div> </form> вот сам js код var $ = jQuery.noConflict(); $(document).ready(function() { jQuery.event.props.push('dataTransfer'); var maxFiles = 6; var errMessage = 0; var defaultUploadBtn = $('#uploadbtn'); var dataArray = []; $('#uploaded-files').hide(); $('#drop-files').on('drop', function(e) { var files = e.dataTransfer.files; if (files.length <= maxFiles) { loadInView(files); } else { alert('Вы не можете загружать больше '+maxFiles+' изображений!'); files.length = 0; return; } }); defaultUploadBtn.on('change', function() { var files = $(this)[0].files; if (files.length <= maxFiles) { loadInView(files); $('#frm').each(function(){ this.reset(); }); } else { alert('Вы не можете загружать больше '+maxFiles+' изображений!'); files.length = 0; } }); function loadInView(files) { // Показываем обасть предпросмотра $('#uploaded-holder').show(); // Для каждого файла $.each(files, function(index, file) { if (!files[index].type.match('image.*')) { if(errMessage == 0) { $('#drop-files p').html('Эй! только изображения!'); ++errMessage } else if(errMessage == 1) { $('#drop-files p').html('Стоп! Загружаются только изображения!'); ++errMessage } else if(errMessage == 2) { $('#drop-files p').html("Не умеешь читать? Только изображения!"); ++errMessage } else if(errMessage == 3) { $('#drop-files p').html("Хорошо! Продолжай в том же духе"); errMessage = 0; } return false; } if((dataArray.length+files.length) <= maxFiles) { $('#upload-button').css({'display' : 'block'}); } else { alert('Вы не можете загружать больше '+maxFiles+' изображений!'); return; } var fileReader = new FileReader(); fileReader.onload = (function(file) { return function(e) { dataArray.push({name : file.name, value : this.result}); addImage((dataArray.length-1)); }; })(files[index]); fileReader.readAsDataURL(file); }); return false; } function addImage(ind) { if (ind < 0 ) { start = 0; end = dataArray.length; } else { start = ind; end = ind+1; } if(dataArray.length == 0) { $('#upload-button').hide(); $('#uploaded-holder').hide(); } else if (dataArray.length == 1) { $('#upload-button span').html("Был выбран 1 файл"); } else { $('#upload-button span').html(dataArray.length+" файлов были выбраны"); } for (i = start; i < end; i++) { if($('#dropped-files > .image').length <= maxFiles) { $('#dropped-files').append('<div id="img-'+i+'" class="image" style="background: url('+dataArray[i].value+'); background-size: cover;"> <a href="#" id="drop-'+i+'" class="drop-button">Удалить изображение</a></div>'); } } return false; } function restartFiles() { $('#loading-bar .loading-color').css({'width' : '0%'}); $('#loading').css({'display' : 'none'}); $('#loading-content').html(' '); $('#upload-button').hide(); $('#dropped-files > .image').remove(); $('#uploaded-holder').hide(); dataArray.length = 0; return false; } $("#dropped-files").on("click","a[id^='drop']", function() { var elid = $(this).attr('id'); var temp = new Array(); temp = elid.split('-'); dataArray.splice(temp[1],1); $('#dropped-files > .image').remove(); addImage(-1); }); $('#dropped-files #upload-button .delete').click(restartFiles); // Загрузка изображений на сервер - эта функция отправляет переменные и загружает картинки. я ее не могу разобрать //надо чтобы из add_adv.php отправлялись еще две переменных $login $id. так вот не могу это реализовать $('#upload-button.upload').click(function() { $("#loading").show(); var totalPercent = 100 / dataArray.length; var x = 0; $('#loading-content').html('Загружен '+dataArray[0].name); $.each(dataArray, function(index, file) { // загружаем страницу и передаем значения, используя HTTP POST запрос $.post('templates/default/pages/upload.php', dataArray[index], function(data) { var fileName = dataArray[index].name; ++x; $('#loading-bar .loading-color').css({'width' : totalPercent*(x)+'%'}); if(totalPercent*(x) == 100) { $('#loading-content').html('Загрузка завершена!'); setTimeout(restartFiles, 1000); } else if(totalPercent*(x) < 100) { $('#loading-content').html('Загружается '+fileName); } var dataSplit = data.split(':'); if(dataSplit[1] == 'загружен успешно') { $('#uploaded-files').append('<li><a href="images/'+dataSplit[0]+'">'+fileName+'</a> загружен успешно</li>'); } else { $('#uploaded-files').append('<li><a href="images/'+data+'. Имя файла: '+dataArray[index].name+'</li>'); } }); }); $('#uploaded-files').show(); return false; }); $('#drop-files').on('dragenter', function() { $(this).css({'box-shadow' : 'inset 0px 0px 20px rgba(0, 0, 0, 0.1)', 'border' : '4px dashed #bb2b2b'}); return false; }); $('#drop-files').on('drop', function() { $(this).css({'box-shadow' : 'none', 'border' : '4px dashed rgba(0,0,0,0.2)'}); return false; }); }); а вот сам файл upload.php в который я не могу передать две эти переменные <?php // Создаем подключение к серверу $db = mysql_connect ("localhost","root",""); // Выбираем БД mysql_select_db ("ads",$db); // Все загруженные файлы помещаются в эту папку $uploaddir = 'userFiles/'; // Вытаскиваем необходимые данные // вот тут выходят два параметра. и так надо еще две переменные сюда а потом в базу данных $file = $_POST['value']; $name = $_POST['name']; // Получаем расширение файла $getMime = explode('.', $name); $mime = end($getMime); // Выделим данные $data = explode(',', $file); // Декодируем данные, закодированные алгоритмом MIME base64 $encodedData = str_replace(' ','+',$data[1]); $decodedData = base64_decode($encodedData); // Вы можете использовать данное имя файла, или создать произвольное имя. // Мы будем создавать произвольное имя! $randomName = substr_replace(sha1(microtime(true)), '', 12).'.'.$mime; // Создаем изображение на сервере if(file_put_contents($uploaddir.$randomName, $decodedData)) { // Записываем данные изображения в БД mysql_query ("INSERT INTO images (date,catalog,filename) VALUES (NOW(),'$uploaddir','$randomName')"); echo $randomName.":загружен успешно"; } else { // Показать сообщение об ошибке, если что-то пойдет не так. echo "Что-то пошло не так. Убедитесь, что файл не поврежден!"; } ?> конечно замудрил я не много. но постарался подробно объяснить всю суть вопроса! второй день уже мучаюсь помогите! пробовал много разных способов, и везде свои проблемы тоже не смог решить. :help: :help: :help: |
Грузить изображения на сервер как base64, это круто, только зачем?
Проверять тип файла, а тем более изображения, да еще когда он уже как строка имеется, это смелое решение, но необдуманное. Всегда можно передать что-то куда-то. Не надо было столько кода вываливать, а просто пояснить каким образом файл add_adv.php связан с файлом upload.php при загрузки изображений - подключается, к первому, перенаправляется на него, другое...? |
так я в js не особо разбираюсь
этот скрипт я скачал. и хочу просто добавить его себе на сайт. просто я много чего перебрал. сейчас тоже нашел один путь но пока не получается.
этот скрипт очень удобный. сразу показывает все открытые изображения и нормально загружает и картинки и записи в базу. только надо добавить туда сам Id объявления чтобы при открытии объявления открывались по Id его картинки. я больше разбираюсь в php чем в js но по ходу дела всегда ковыряю скрипты. иногда получается иногда нет. так что вы мне посоветуете? |
Цитата:
Сразу просмотреть при загрузке, это не проблема. А пояснения так понимаю не будет, если скрипты чужие, а вы даже не понимаете как их связать. |
тогда посоветуйте мне нормальный скрипт загрузки изображений? как вы говорите не кривыми руками написанный) чтобы сразу показывал эскизы и мог загружать до 6 изображений, и корректную запись в базу данных!
заранее спасибо! |
Цитата:
Найти конкретный скрипт который бы выполнял на все 100% необходимые для вас действия на сервере не обязательно возможно. А вот добавить таковые операции скрипту готовому, это можно. |
Часовой пояс GMT +3, время: 19:18. |