PHP and JQuery and AJAX and Upload Files!
1.
fhgdfhdfhdf (20.07.2012 / 21:41)
Надеюсь я не сильно надоел с вопросами, но этот вопрос уже более сложный и думаю много кому пригодиться ответ на него. Вопрос следующий, как организовать динамичную загрузку файлов (в моем случае картинок) на сервер, с добавлением к каждому файлу описания.
Нужно чтобы это выглядело примерно так:
- Выбираю раздел (ссылка);
- Выбираю категорию (
SELECT);
- Выбираю нужные картинки.
- Картинки загружаются, показываются и на против каждой надстройки для нее типа: описание, обложка или нет.
- После заполнения всего картинки загружаются в выбранную категорию выбранного раздела с описаниями и всеми надстройками, естественно для каждой картинки своя строка в БД.
Возможно у кого есть готовые похожие скрипты которые можно было бы по разбирать, или кто то хоть примерно сможет подсказать как и что.
2.
fhgdfhdfhdf (20.07.2012 / 21:45)
Пока что все выглядит так:
case 'addfoto':
echo('<div id="zagol"><h1>Админ. панель - Выбор раздела для загрузки фото</h1></div><br />');
$result = mysql_query('SELECT * FROM cat');
while ($row = mysql_fetch_array($result))
{
echo '<div id="srazdel">';
echo '<a href="mpanal.php?act=addfoto2&id='. $row[0] .'">'. $row[1] .'</a>' ;
echo '</div>';
}
echo('<br /><hr><div id="optic"><a href="mpanal.php">На главную</a></div>');
break;
case 'addfoto2':
echo('<form action="go.php" method="post" enctype="multipart/form-data" >');
echo('<label for="file">Filename:</label><input type="file" name="file" id="file" /><br />');
echo('<select id="mymenu" name="pcfoto" >');
$result = mysql_query("SELECT id_pcat, pc_name FROM pcat WHERE id_cat='".$_GET[id]."'");
$count = mysql_num_rows($result);
for ($i = 0; $i < $count; $i++)
{
$row = mysql_fetch_array($result);
echo '<option value=' . $row['0'] . '>' . $row['1'] . '</option>';
}
echo('</select><br /><input name="nfoto" type="text"/><br />');
echo('<textarea cols="25" rows="5" name="ofoto"></textarea><br />');
echo('<input type="submit" name="submit" value="Submit" /></form>');
break;
3.
fhgdfhdfhdf (20.07.2012 / 21:46)
<?php
require_once('db.php');
// Where the file is going to be placed
$target_path = 'img/';
/* Add the original filename to our target path.
Result is "uploaded_files/filename.extension" */
$target_path = $target_path . basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['file']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
if($_POST['nfoto']){
$result = mysql_query ("INSERT INTO foto (id_pcat, n_foto, o_foto, u_foto, date)
VALUES ('".$_POST['pcfoto']."', '".$_POST['nfoto']."', '".$_POST['ofoto']."', 'img/". basename( $_FILES['file']['name'])."', '".date('d/m/Y H:i')."')");
if($result){
echo('<br>Юппц');
}
else{
echo('<br> no bich');
}
}
else{
echo('не удача((((');
}
?>
Все в кучу все не понятно....
4.
Артур (20.07.2012 / 21:50)
Эмм.. Хардкорно ) У меня было что то подобное, но найти уже не смогу. Здесь нужен немного другой подход к разработке
5.
ramzes (20.07.2012 / 21:53)
есть же готовый аплоад класс на аяксе
6.
Артур (20.07.2012 / 21:54)
В JQuery целых 4 метода для Ajax запроса, но тут то еще нужно интерфейс спроектировать
7.
fhgdfhdfhdf (20.07.2012 / 22:03)
5.
ramzes, что это и где найти?) просто пока что сложности с интернетом, скорости минимальны, поэтому и сижу пока что в основном тут, так как визави уже прогружен и более менее легкий...
8.
ramzes (20.07.2012 / 22:06)
http://tfile.info/file/275/
Добавлено через 02:15 сек.
this._settings = {
// Location of the server-side upload script
action: 'upload.php',
// File upload name
name: 'userfile',
// Additional data to send
data: {},
// Submit file as soon as it's selected
autoSubmit: true,
// The type of data that you're expecting back from the server.
// Html and xml are detected automatically.
// Only useful when you are using json data as a response.
// Set to "json" in that case.
responseType: false,
// When user selects a file, useful with autoSubmit disabled
onChange: function(file, extension){},
// Callback to fire before file is uploaded
// You can return false to cancel upload
onSubmit: function(file, extension){},
// Fired when file upload is completed
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
onComplete: function(file, response) {}
};
вот тут в нем настройки если что
9.
fhgdfhdfhdf (20.07.2012 / 22:16)
спасибо =) буду разбираться =)
если у кого то есть еще какие не то варианты, примеры, предложения просьба написать. =)
10.
fhgdfhdfhdf (20.07.2012 / 23:41)
Вопрос не совсем в тему как сделать так что бы имя загружаемой картинки менялась на мое, например на дмгчмс или на произвольное уникальное имя.
11.
fhgdfhdfhdf (21.07.2012 / 00:40)
На последний вопрос нашел ответ сам:
// Where the file is going to be placed
$target_path = 'img/';
$ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['file']['name']);
$unic_name = time().'_'.rand(0,1000).$ext;
/* Add the original filename to our target path.
Result is "uploaded_files/filename.extension" */
$target_path = $target_path . $unic_name;
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo "The file ". $target_path .
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
if($_POST['nfoto']){
$result = mysql_query ("INSERT INTO foto (id_pcat, n_foto, o_foto, u_foto, date)
VALUES ('".$_POST['pcfoto']."', '".$_POST['nfoto']."', '".$_POST['ofoto']."', '". $target_path ."', '".date('d/m/Y H:i')."')");
Остальные вопросы пока в силе.
12.
Дмитрий (21.07.2012 / 00:57)
Аплоад лучше всего делать во фрейме, с применением легкой JS-магии.
13.
fhgdfhdfhdf (21.07.2012 / 01:11)
12.
dima.london, он сам не легок за то) скрипт даже на лакалке грузится долго) что же будет в инете))
14.
Дмитрий (21.07.2012 / 01:17)
13.
6680, ты сейчас какую-то дикую ерунду говоришь.
15.
fhgdfhdfhdf (21.07.2012 / 01:17)
Хотелось бы узнать про Upload, предположим вот мои надстройки скрипта:
<script type="text/javascript">
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : 'scripts/uploadify.swf', // Относительный путь к файлу uploadify.swf. По умолчанию uploadify.swf
'script' : 'scripts/uploadify.php', // Относительный путь uploadify.php. По умолчанию uploadify.php. Это скрипт - загрузчик. Обязательно посмотрите его
'cancelImg' : 'scripts/cancel.png', // Относительный путь до картинки cancel.png. По умолчанию cancel.png
'folder' : 'uploads', // Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
//Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
//Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права
'queueID' : 'fileQueue', // ID элемента, в котором будет показываться очередь загрузки
'queueSizeLimit' : '10', // Лимит очереди (максим. число загруж файлов). По умолчанию 999
'auto' : false, // Если истина, загрузка начнется сразу после выбора файлов
'multi' : true, // Если истина, то разрешена загрузка нескольких файлов
'fileDesc' : 'только фотографии jpg', // Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
'fileExt' : '*.jpg; *.jpeg; *.JPG; *.JPE; *.jpe', // разрешенные к загрузке файлы (остальные вдиалолговом окне будути скрыты)
'sizeLimit' : 1500000, // Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
'simUploadLimit' : 1, // Ограничение на кол-во одновременных закачек. По умолчанию 1. Если значение равно 1, то загружаться будет 1 файл, а остальные будут стоять за ним в очереди. Если 2 - два загружаются, остальные ждут их и т.д
'buttonText' : 'File', // Текст на кнопке. По умолчанию BROWSE. К сожалению русскийтекст не поддрживается
'buttonImg' : 'scripts/btn.png', // Путь до картинки, которая будет служить кнопкой. Компенсирует недостаток предыдущей. Если эта настройка указана, предыдущая будет проигнорирована
'width' : 255,
'height' : 87,
// 'onInit' : alert('Скрипт готов!'),// Функция, которая срабатывает, когда скрипт будет загружен. По умолчанию обработчик событий скрывает целевой элемент на странице и заменяет его с флэш-файл, затем создает очереди контейнера после него.
16.
fhgdfhdfhdf (21.07.2012 / 01:19)
'onSelect' : function(event, queueID, fileObj){ // Функция, которая сработает, при выборе каждого файла. Пример:
var string = 'Имя фала: ' + fileObj.name +'\n';
string += 'Размер файла: ' + fileObj.size + 'байт\n';
string += 'Тип: ' + fileObj.type + '\n';
string += 'ID в очереди: ' + queueID +'\n'; // уникальный ID файла, генерируется скриптом
alert(string)
},
'onSelectOnce' : function(event, data){ //Функция, которая вызывается один раз для каждой операции выбора.
var string = 'Файлов в очереди: ' + data.fileCount +'\n';
string += 'Было выбрано файлов: ' + data.filesSelected +'\n';
string += 'Заменено файлов в очереди: ' + data.filesReplaced +'\n';
string += 'Итоговый вес файлов в очереди: ' + data.allBytesTotal +'\n';
alert(string);
},
'onProgress' : function(event, queueID, fileObj, data){ // Срабатываети каждый раз в ходе изменений во време загрузки
var string = 'Загружаем: ' + fileObj.name +'<br />';
string += 'Размер: ' + fileObj.size +'<br />';
string += 'Тип: ' + fileObj.type +'<br />';
string += 'загрузка текущего файла: ' + data.percentage +'%<br />';
string += 'загружено байт текущего файла: ' + data.bytesLoaded +'<br />';
string += 'загружено байт всей очереди: ' + data.allBytesLoaded +'<br />';
string += 'скорость загрузки, KB/s: ' + data.speed +'<br />';
$('#info,#info2').show();
$('#info').html(string);
},
17.
fhgdfhdfhdf (21.07.2012 / 01:20)
'onComplete' : function(event, queueID, fileObj, response, data){ // Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
var string = 'Загружен файл: ' + fileObj.name +'<br />';
string += 'Путь до файла: ' + fileObj.filePath +'<br />';
string += 'Размер, байт: ' + fileObj.size +'<br />';
string += 'Тип: ' + fileObj.type +'<br />';
string += 'Пришел ответ от сервера: ' + response +'<br />';
string += 'Файлов в очереди: ' + data.fileCount +'<br />';
string += 'скорость загрузки, KB/s: ' + data.speed +'<br />';
$('#info2').append('<br />Фаил ' + fileObj.name + ' загружен!<br />');
},
'onAllComplete' : function(event, data){ // Срабатывает когда все загрузки завершены
var string = 'Загружено файлов: ' + data.filesUploaded +'\n';
string += 'Ошибок: ' + data.errors +'\n';
string += 'Всего загружено kбайт: ' + data.allBytesLoaded/1024 +'\n';
$('#info,#info2').fadeOut(5000, function() { $('#info,#info2').html('');}); // Плавно прячем информационные блоки и затем очищаем их
}});});</script></head><body>
Добавлено через 03:06 сек.
'auto' : false, // Если истина, загрузка начнется сразу после выбора файлов
Когда стоит лож появляются строки загрузок файлов и ждут, а вот чего они ждут? для продолжения нужно что то сделать, запустить функцию, как это сделать? значение "истина" мне не подходит.
18.
fhgdfhdfhdf (21.07.2012 / 01:34)
14.
dima.london, Можешь подсказать как запустить дальнейшую загрузку выбранных файлов?
19.
fhgdfhdfhdf (21.07.2012 / 14:33)
Вопрос выше отподает!
Кто знает можно ли в скрипте надстройки сделать так что бы файл менял свое имя? чтобы это делать не в PHP а прям в JS при загрузке картинок.
20.
fhgdfhdfhdf (24.07.2012 / 02:41)
Уже тоже не надо) тему можно считать
закрытой
URL:
https://visavi.net/topics/33368