Сообщение от St.
|
Как им пользоваться на *nix компах?
|
Ajax, это всего лишь технология взаимодействия клиент->сервер, и какой у вас сервер не имеет значения.
К примеру - что делать, если пользователь отправляет свои фото, в также другую информацию на сервер, которая будет добавлена в базу, а значит только после добавления получит уникальный идентификатор, или проверив ошибки ввода сервер возвращает их пользователю, а фото загружены без ошибок?
Если загруженные документы нужно связать с добавляемой записью, то нужно сперва добавить запись, получить ID, затем уже заниматься документами, а значит документы где-то должны быть временно храниться. Можно конечно их перенести в какой-то свой временный каталог, но возникает вторая проблема - следить за мусором.
Загружать фото заново при ошибках, это опять затраты времени, значит и в этом случае где-то надо временно хранить фото. Если есть ошибки при загрузке изображений, но не всех, можно принять те, что загружены удачно, сообщив об этом пользователю, а те что с ошибками предложить загрузку заново.
Сервер с успехом может хранить документы временно в сессии, плюс в этом в том, что в случаях когда пользователь покинул страницу, не закончив все операции, весь мусор удалит сборщик мусора, при этом при Ajax продлевать время жизни сессии не составит труда, а значит и не пропадет уже загруженное.
То есть этот сценарий в любом случае должен присутствовать вне зависимости от того проверяет ли клиент условия загрузки.
На клиенте же можно также проверять условия, например, в случае если выбранное изображение не соответствует условию, то можно этому полю ввода (индексу в коллекции, если поле с мульти выбром) присвоить метку. А оправляя форму на сервер помещать в FormData() только те изображения, которые не имеют меток "плохой".
Это к тому, чтобы рыская по переходом, не выбирать заново файлы, но только учтите - выбор файла и его загрузка на сервер, это все таки разные понятия. Но никакими кнопками и извратами вы не заставите браузер атоматом загружать то, что ранее выбиралось в форме.