Показать сообщение отдельно
  #1 (permalink)  
Старый 23.11.2014, 15:03
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

По совокупности обстоятельств ни один из перечисленных способов мне не понравился. Зато очень понравился такой: на каждый файл делается свой чек-бокс "Удалить", но, checked.

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

Во-вторых имена чеков тождественны имени кнопки (поля file). Я и раньше так делал, но с текстовыми полями - у file свой namespace, в post его никогда не будет, он как это - мультипарт. Таким образом через чеки имена файлов гоняются туда-сюда как это происходит с обычными текстовыми полями и всякими там списками.

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

Визуально, конечно, выглядит наборот. Чеки замаскированы меткой которая видима как серый Х. Чек в это время чекед, а если юзер жмет на Х, Х становится красным, вылезает попап насчет удаления и после этого чек - унчекан и значит на сервер его валуе вообще не придет. И файл, по вычитанию из дефолтного значения остатка - будет стерт.

Вопросы такие. Насколько вообще это через ж; как можно повысить надежность - какие-то проверки на какие-то события, что если чеков нет - то х отправишь и все такое. Кто-нить так делал? В смысле если делал то как выходило.
Ответить с цитированием