как избежать конфликта именования ч / б загруженных файлов

#java #jakarta-ee #servlets

#java #джакарта-ee #сервлеты

Вопрос:

Веб-приложение загружает файлы ( images only ) с клиента на сервер no any DB , а также сохраняет один и тот же файл / файлы с сервера на компьютер клиента.

Процесс 1. загрузки файла <input type="file /">
2. сохранение файлов в предопределенное расположение сервера: java
3. загрузите те же файлы с сервера на компьютер клиента, нажав на кнопку сохранить

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

возможное решение: во время загрузки файла с клиента на сервер создайте по одной папке для каждого клиента и сохраните файл в определенной вновь созданной папке.

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

Окружающая среда : java servlet Apache-tomcat 6.0 xhtml

Ответ №1:

Используйте метод HttpServletReqeust.getSession(), чтобы получить уникальный сеанс клиента, а затем HttpSession.getId(), чтобы получить идентификатор сеанса, который вы можете использовать при построении имени каталога / файла.

Ответ №2:

 create one folder for each client/user.
  

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

Комментарии:

1. да, структура каталогов может быть основана на идентификаторе пользователя, но что, если клиенту (идентификатору пользователя) необходимо создать несколько папок?

2. ну, это другой вопрос… в этом случае можно использовать дату и, действительно, идентификатор сеанса