#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. ну, это другой вопрос… в этом случае можно использовать дату и, действительно, идентификатор сеанса