Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Форма с прикреплением файлов (https://javascript.ru/forum/jquery/60772-forma-s-prikrepleniem-fajjlov.html)

Yadomaru 19.01.2016 16:49

Форма с прикреплением файлов
 
Всем доброго времени суток!
Есть форма с обычными текстовыми инпутами и прикреплением файлов. Само прикрепление файлов работает через jQuery File Upload, файлы отправляются в папку на сервере без отправки самой формы.
Возникла проблема как связать файлы, которые прикрепляет пользователь и данные формы, которые отправляются по нажатию на submit?

То есть пользователь прикрепил допустим три файла, потом заполнил контактные данные и нажал "отправить". Файлы загрузились отдельно, данные отдельно. Может кто помочь советом? Заранее благодарю!

laimas 19.01.2016 16:53

Какой язык используется сервером? Фалы загружаются с какой целю?

Yadomaru 19.01.2016 17:12

Цитата:

Сообщение от laimas (Сообщение 404266)
Какой язык используется сервером? Фалы загружаются с какой целю?

Язык PHP, а файлы в качестве дополнительной информации к сообщению посетителя.

В идеале пример работы формы как на avito при добавлении объявления.

laimas 19.01.2016 17:21

Авито, не авито, это не важно. Если к сообщению, то контактные данные не обязательно есть уникальность, а значит либо регистрация, либо уже существует. А это означает, что пользователь также в базе под уникальным ID. Вот с этим ID и нужно ассоциировать файлы.
И тут в зависимости от того как организовано их хранение. К примеру, у каждого пользователя своя папка под изображения, значит файлы нужно перемещать в его папку, связывая каждый с ID сообщения.
Если наоборот, папки связываются с ID сообщения, то в нее помещаются файлы которые связываются по ID пользователя.
Ну и третий случай, общая папка (не совсем лучший вариант, если файлов в ней будет много), тогда в эту папку помещается файлы как связанные и по ID сообщения, и по ID пользователя.
Если формируемое имя файла прописывается непосредственно в базу, то могут быть еще варианты.
А у вас как все организовано хранение?

Yadomaru 19.01.2016 17:26

Цитата:

Сообщение от laimas (Сообщение 404272)
Авито, не авито, это не важно. Если к сообщению, то контактные данные не обязательно есть уникальность, а значит либо регистрация, либо уже существует. А это означает, что пользователь также в базе под уникальным ID. Вот с этим ID и нужно ассоциировать файлы.
И тут в зависимости от того как организовано их хранение. К примеру, у каждого пользователя своя папка под изображения, значит файлы нужно перемещать в его папку, связывая каждый с ID сообщения.
Если наоборот, папки связываются с ID сообщения, то в нее помещаются файлы которые связываются по ID пользователя.
Ну и третий случай, общая папка (не совсем лучший вариант, если файлов в ней будет много), тогда в эту папку помещается файлы как связанные и по ID сообщения, и по ID пользователя.
Если формируемое имя файла прописывается непосредственно в базу, то могут быть еще варианты.
А у вас как все организовано хранение?

Проблема как раз в том, что регистрации нет. Пользователь просто вводит имя и прикрепляет файлы. Но прикрепление файлов и отправка имени происходит в разный момент. Как их связать? Может сессию открыть для каждого посетителя?

На счет самой организации папка с ID сообщения и туда файлы.

laimas 19.01.2016 17:42

Цитата:

Сообщение от Yadomaru
Проблема как раз в том, что регистрации нет.

Это плохо, ибо базу неминуемо ожидает куча мусора в виде дубликатов.

Цитата:

Сообщение от Yadomaru
Но прикрепление файлов и отправка имени происходит в разный момент.

Это вы так думаете или это действительно так? "Само прикрепление файлов работает через jQuery File Upload, файлы отправляются в папку на сервере без отправки самой формы." еще не означает, что поля контактных данных и поля выбора файлов, это поля различных форм.

Yadomaru 19.01.2016 17:50

Цитата:

Сообщение от laimas (Сообщение 404276)
Это плохо, ибо базу неминуемо ожидает куча мусора в виде дубликатов.



Это вы так думаете или это действительно так? "Само прикрепление файлов работает через jQuery File Upload, файлы отправляются в папку на сервере без отправки самой формы." еще не означает, что поля контактных данных и поля выбора файлов, это поля различных форм.

Форма одна, но при нажатии "отправить" Имя передается, а файлы нет.

laimas 19.01.2016 18:06

Цитата:

Сообщение от Yadomaru
Форма одна, но при нажатии "отправить" Имя передается, а файлы нет.

Даже так, и как тогда вы получаете файлы? :)
Вы как проверяете на сервере получение данных этой формой, включая и файлы?

Yadomaru 19.01.2016 18:16

Цитата:

Сообщение от laimas (Сообщение 404283)
Даже так, и как тогда вы получаете файлы? :)
Вы как проверяете на сервере получение данных этой формой, включая и файлы?

Файлы загружаются непосредственно при прикреплении скриптом jQuery File Upload. То есть выбрал файл(ы) и они загрузились сразу даже без нажатия на "отправить".

Данные проверяю так: Имя через $_POST, а файлы через $_FILES.

laimas 19.01.2016 18:30

Ну если файлы сами по себе, то дела плохи. Сперва нужно отправить сообщение, чтобы после добавления его в базу получить ID этой записи, и только потом, зная его можно положить их папку сообщения. Как я понял у вас создается папка под каждое такое сообщение (в общем это расточительно)?

Тогда только сессия, в которой загруженные файлы будут хранится до тех пор, пока ни будет получено сообщение, а после его получения переместить файлы из сессии в созданную папку.


Часовой пояс GMT +3, время: 14:08.