С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 22

Форма обратной связи AJAX drag/drop с предпросмотром картинок

03.11.2017, 13:14. Показов 2563. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Решил сюда написать.
Подскажите, плиз, как можно реализовать форму обратной связи, чтобы пользователь загружал картинки, можно в большом количестве, путем перетаскивания (drag/drop) и последующим предпросмотром. Также добавить стандартные поля для заполнения, радиокнопки и списки.
Похожие примеры - вот тут:
http://easy-code.ru/lesson/ajax-file-upload-form
http://xozblog.ru/2012/10/html5-uploader/

Пример того, что хотелось бы получить - http://fotoek.ru/
Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2017, 13:14
Ответы с готовыми решениями:

Форма обратной связи для сайта html + ajax
Есть html сайт на нем уже встроены верстальщиком формы но так и не доделана возможность отправки на почту. Есть замечательная инструкция...

AJAX форма обратной связи
На сайте создал форму обратной связи с применением AJAX (на правой колонке видна во всех страницах) Во всех страницах форма нормально...

ajax-форма обратной связи
ajax форма обратной связи. Пытался написать сам, но ничего не выходит. Не передает данные из формы в php-скрипт. Пишет: Deprecated:...

6
 Аватар для AmateR62
118 / 118 / 87
Регистрация: 24.02.2014
Сообщений: 404
03.11.2017, 14:19
А что именно вас интересует? Написать вам полностью функционал загрузки изображений, форму настроек и отправки или просто подсказать что то?) Если первое то боюсь вам в раздел фриланса))
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 22
03.11.2017, 14:31  [ТС]
ок, уточню. чтобы скопировать функционал (с дизайном я справлюсь и так) с сайта-примера (fotoek.ru) форму загрузки страницы, что мне для этого надо? есть готовое решение, хотя бы похожее, или мне в раздел фриланса?
0
 Аватар для AmateR62
118 / 118 / 87
Регистрация: 24.02.2014
Сообщений: 404
03.11.2017, 14:42
Если jQuery знаете, то ни чего сложного нет. Мне нравится функционал плагина dmuploader.js. Почитать можно тут http://www.itlessons.info/php/ajax-file-upload/ Если с jQuery не дружите, то в раздел фриланса
1
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 22
03.11.2017, 19:08  [ТС]
Спасибо за ссылку. Там прямо готовое решение. Слегка допилить, сделать загруженные картинки маленькими, добавить пару полей для заполнения и кнопку Отправить - и готово)

Добавлено через 51 минуту
Можно теоретический вопрос? Да, с jQuery не то что не дружу, а на "вы" и шепотом, только в html и css.
С этого сайта (fotoek.ru) я могу взять разметку:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<div class="content">
    <div class="t1">Загрузите Ваши фотографии</div>
    <div class="b1">
        <div class="t2">
            Чтобы заказать печать фотографий через интернет, выберите желаемый формат, поля и нажмите<br>
            кнопку добавить фотографии. <a href="pravila.pdf" target="_blank" style="text-decoration: none"><span class="t3 jas_hop jas_noselect" >Ознакомьтесь с правилами печати «С полями» и «Без полей»</span></a>
        </div>
    </div>
    <form method="POST_AJAX" class="jas_form b5" action="/mail.php" data-jas_source="1">
        <div class="jas_input b14" data-jas_params="{required: true, required_msg: 'Пожалуйста, выберите файлы', name: 'dummy'}">
            <div class="b2 jas_hop jas_noselect" style="display: none;">
                                <div class="i1"></div>
                                <div class="t4"><span>Нажмите,</span> чтобы добавить<br>фотографии со своего компьютера</div>
                                <div class="t5">Общий размер файлов не должен превышать 2 ГБ</div>
                                <input type="file" class="uploader" multiple>
                            </div>
                            <div class="b10" style="display: block;">
                                <div class="b11 v1 jas_hop jas_noselect">
                                                                            <input type="file" class="uploader" multiple>
                                                                    </div>
                                                                    <div class="b11 v2" data-name="59f847fd1bbff.jpg" style="background-image: url('/temp/24da99dcc99cc6301566c1ae05e1fcc4/59f847fd1bbff.jpg');" data-state="ok">
                                        <div class="a1"></div>
                                    </div>
                                                                    <div class="b11 v2" data-name="59f847fddd412.jpg" style="background-image: url('/temp/24da99dcc99cc6301566c1ae05e1fcc4/59f847fddd412.jpg');" data-state="ok">
                                        <div class="a1"></div>
                                    </div>
                                                                    <div class="b11 v2" data-name="59f847fe90b01.jpg" style="background-image: url('/temp/24da99dcc99cc6301566c1ae05e1fcc4/59f847fe90b01.jpg');" data-state="ok">
                                        <div class="a1"></div>
                                    </div>
                                                                    <div class="b11 v2" data-name="59f847ff85b45.jpg" style="background-image: url('/temp/24da99dcc99cc6301566c1ae05e1fcc4/59f847ff85b45.jpg');" data-state="ok">
                                        <div class="a1"></div>
                                    </div>
                                                                    <div class="b11 v2" data-name="59f84809d3965.jpg" style="background-image: url('/temp/24da99dcc99cc6301566c1ae05e1fcc4/59f84809d3965.jpg');" data-state="ok">
                                        <div class="a1"></div>
                                    </div>
                                                            </div>
                        </div>
                        <div class="t6">Выберите параметры печати</div>
                        <div class="b3">
                            <div class="b4">
                                <div class="t7 v1">Формат:</div>
                                <!-- Прайс -->
                                <div class="jas_dropdown c4 _c4 v1" data-jas_params="{name: 'c1', placeholder: 'Формат', options: [
                                    {
                                        value: '0',
                                        content: '10 x 15',
                                        selected: true
                                    },
                                    {
                                        value: '1',
                                        content: '13 x 18'
                                    },
                                    {
                                        value: '2',
                                        content: '15 х 21'
                                    },
                                    {
                                        value: '3',
                                        content: '21 х 30'
                                    },
                                    {
                                        value: '4',
                                        content: '30 х 42'
                                    },
                                    {
                                        value: '5',
                                        content: '33 х 48'
                                    },  
                                         ]}"></div>
                                <div class="jas_clear"></div>
                            </div>
                            <div class="b4">
                                <div class="t7 v2">Бумага:</div>
                                <div class="jas_dropdown c4 _c4 v2" data-jas_params="{name: 'c2', placeholder: 'Бумага', options: [
                                    {
                                        value: '1',
                                        content: 'Глянцевая',
                                        selected: true
                                    },
                                    {
                                        value: '0',
                                        content: 'Матовая'
                                    }
                                ]}"></div>
                                <div class="jas_clear"></div>
                            </div>  
                            <div class="b4">
                                <div class="t7 v3">Поля:</div>
                                <div class="jas_dropdown c4 _c4 v3" data-jas_params="{name: 'c3', placeholder: 'Поля', options: [
                                    {
                                        value: '1',
                                        content: 'Без полей',
                                        selected: true
                                    },
                                    {
                                        value: '0',
                                        content: 'С полями'
                                    }
                                ]}"></div>
                                <div class="jas_clear"></div>
                            </div>
                        </div>
                        <div class="t8">Информация о покупателе:</div>
                        <div class="b7">
                            <div class="b6">
                                <div class="t9 v1">Ваше имя:</div>
                                <div class="jas_edit c5 v1" data-jas_params="{name: 'name', placeholder: 'Иванов Иван', required: true, required_msg: 'Пожалуйста, заполните это поле!'}"></div>
                            </div>
                            <div class="b6 v2">
                                <div class="t9 v2">Ваш телефон:</div>
                                <div class="jas_edit c5 v2" data-jas_params="{name: 'phone', placeholder: '+ 7 (___) ___ ____', required: true, required_msg: 'Пожалуйста, заполните это поле!'}"></div>
                            </div>
                            <div class="jas_clear"></div>
                        </div>
                        <div class="b7">
                            <div class="b6">
                                <div class="t9 v3">Доставка:</div>
                                <div class="jas_dropdown c4 _c4 v4" data-jas_params="{name: 'c4', placeholder: 'Доставка', options: [
                                    {
                                        value: '0',
                                        content: 'Нет',
                                        selected: true
                                    },
                                    {
                                        value: '1',
                                        content: 'Да'
                                    }
                                ]}"></div>
                                <div class="jas_clear"></div>
                            </div>
                            <div class="b6 v1">
                                <div class="t9 v4">Адрес:</div>
                                <div class="jas_edit c5 v3" data-jas_params="{name: 'address', placeholder: 'Улица, дом, номер квартира или офиса'}"></div>
                            </div>
                            <div class="jas_clear"></div>
                        </div>  
                        <div class="b7">
                            <div class="b6 v3">
                                <div class="t9 v5">Комментарий<br>к заказу:</div>
                                <div class="jas_edit c5 v4" data-jas_params="{type: 'textarea', name: 'comment', placeholder: 'Ваш комментарий...'}"></div>
                            </div>
                            <div class="jas_clear"></div>
                        </div>
                        <div class="b8">
                            <div class="t10">Итого к оплате: <span class="t11"><span>0</span> рублей</span></div>
                            <a href="pravila.pdf" target="_blank"><div class="t12 jas_hop jas_noselect">
                                <span>Ознакомьтесь с правилами печати<br>
                                «С полями» и «Без полей»</span>
                            </div></a>
                        </div>
                        <div class="b9">
                            <div class="_t1"></div>
                            <div class="jas_form_submit c3 jas_noselect">Отправить заказ в печать</div>
                            <div class="t13">Отправлено в печать: 5371 заказов</div>
                        </div>
                        <div class="jas_clear"></div>
                    </form>
                </div>
            </div>
Могу оттуда же взять и стили все, подстроив под себя. Могу я оттуда же и взять Javascript и php для полноценного функционала?
0
 Аватар для AmateR62
118 / 118 / 87
Регистрация: 24.02.2014
Сообщений: 404
03.11.2017, 21:59
Цитата Сообщение от gvardiyan Посмотреть сообщение
Могу я оттуда же и взять Javascript и php для полноценного функционала?
Скрипты стащить можно, а вот php не получится, придется самому писать
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 22
04.11.2017, 00:33  [ТС]
PHP обязательно самому придумывать или подойдет просто сторонний, но в этой же теме?
Например:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
// разрешенные форматы
$allowed = array('png', 'jpg', 'gif','zip');
 
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
 
    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
 
    if(!in_array(strtolower($extension), $allowed)){
        echo '{"status":"error"}';
        exit;
    }
 
    if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
        echo '{"status":"success"}';
        exit;
    }
}
 
echo '{"status":"error"}';
exit;
Или
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// upload.php
require_once __DIR__ . '/protected/bootstrap.php';
 
if (!IS_POST() || !$_FILES) {
  stopAndResponseMessage('error', 'Только POST, FILES'
}
 
$files = convertFileInformation($_FILES);
 
if (!isset($files['file'])) {
  stopAndResponseMessage('error', 'Файл не загружался');
}
 
$file = $files['file'];
 
if ($file['error'] !== UPLOAD_ERR_OK) {
  stopAndResponseMessage(
    'error', 
    uploadCodeToMessage($file['error'])
  );
}
 
$mimeType = guessMimeType($file['tmp_name']);
if (!$mimeType) {
  stopAndResponseMessage('error', 'Тип файла не распознается!');
}
 
$validMimeType = ['image/png', 'image/jpeg'];
 
if (!in_array($mimeType, $validMimeType)) {
  stopAndResponseMessage(
    'error', 
    'Загружать можно только png и jpeg!'
    );
}
 
$size = filesize($file['tmp_name']);
if ($size > 256 * 1024) {
  stopAndResponseMessage('error', 'Файл слишком большой!!');
}
 
$uploadDir = __DIR__ . '/files';
if (!is_writable($uploadDir)) {
  stopAndResponseMessage(
    'error', 
    'Папка для файлов не доступна для записи.'
  );
}
 
$filename = time() . '-' 
              . mt_rand(0000, 9999) 
              . '.' . guessFileExtension($mimeType);
 
if (!move_uploaded_file(
      $file['tmp_name'], 
      $uploadDir . '/' . $filename)) {
  stopAndResponseMessage('error', 'Файл не был перемецен!');
}
 
sendResponse('upload', ['url' => 'files/' . $filename]);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2017, 00:33
Помогаю со студенческими работами здесь

Форма обратной связи: admin-ajax.php возвращает 0
Форма обратной связи. admin-ajax.php возвращает 0. При этом до переноса страницы на wordpress форма работала. Пожалуйста, помогите решить...

Форма обратной связи на PHP и jQuery с использованием Ajax
Здравствуйте, С наступившим Новым Годом! Подскажите, пожалуйста, устанавливал форму обратной связи: &quot;Форма обратной связи на PHP и...

Перемещение картинок с использованием Drag and Drop
Помогите выполнить пожалуйста задание. Вот формулировка: Расположить в окне несколько картинок. Предоставить возможность пользователю...

Drag and Drop для загрузки картинок
Хочу сделать возможность навести мышь с картинкой на блок и чтобы началась загрузка. Вешаю обработчик на document, код работает, но когда...

Не работает Drag'n Drop в Ajax окне
Есть Drag and drop написанный на js (работает отлично) и модальные окна с подгрузкой контента при обращении к скрипту (на jquery) Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru