Как грамотно реализовать алгоритм прикрепления (закачки) файлов к сущности?
Небольшая самописная система. Пользователь создает заявку, открывается форма в которой заполняются разные поля, в том числе загружаются произвольное количество файлов ассоциирующихся к создаваемой заявке. Нажимает ок - заявка отправляется на сервер, сохраняется. При загрузке файлов, во время оформлении заявки, они сразу закачиваются аяксом, при этом на сервере они сразу вносятся в таблицу бд и складываются в папку. Во время этого процесса, на страницу возвращаются id соответствующие записям таблицы. При сохранении заявки, страница отправляет повторно на сервер список id закачанных файлов, с помощью которого закачанные файлы ассоциируются в бд с созданной сущностью заявки. Проблема в том, что если заявку не сохранить и закрыть окно браузера, в таблице списка загруженных файлов останутся записи соответсвующие закачанным файлам и сами файлы тоже. Как сделать так, чтобы не допускать создания "мусорных" файлов на сервере?
| При сохранении заявки, страница отправляет повторно на сервер список id закачанных файлов,
Я бы так не делал. Со стороны клиента можно отправить любые id и получить доступ к чужим файлам. Храните в сессии список последних загруженных id. На у дальше как предложили, чистить бд и удалять не привязанные файлы.
Я в одну таблицу складываю список закачанных файлов, а во второй ассоциирую каждый файл с одним или несколькими тэгами (в вашем случае это будет происходить при сохранении заявки).
При очередной загрузке файла проверяю - если файл загружен раньше определенного времени (к примеру больше часа назад), и не ассоциирован хотя бы с одним тэгом - удаляем.