2016-06-02 1 views
0

Мое требование - одностраничное приложение, имеющее загрузку файла и многие другие слайдеры/выпадающие списки, которые запускают события на сервер при каждом изменении ,Как сохранить (за сеанс/вкладку) загруженный файл на сервере (базовый компонент сценария Nodejs/Java)

Идеальный рабочий процесс для моего приложения добавления 1) пользователя файл с помощью меню Файл Загрузить widget-> Сервер должен сохранить этот файл и использовать для дальнейших запросов от одного клиента 2) Пользователь изменяет ползунки или выпадающие значения -> Клиентские пожары запросы к серверу. Сервер использует файл, который был загружен изначально, и применяет некоторую логику и возвращает ответ, который отображается где-то на странице.

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

Пожалуйста, дайте мне знать, какие технологии/каркасы лучше всего подходят для моего использования. Любые ссылки/примеры страниц с аналогичным вариантом использования также будут очень полезными.

ответ

0

Я предлагаю это краткость схемы:

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

  2. После этого загружается уникальный идентификатор клиента. Окно клиента затем отслеживает этот уникальный идентификатор в переменной javascript для этого окна.

  3. Всякий раз, когда это окно желает применить некоторую операцию к этому файлу, он отправляет на сервер запрос Ajax с уникальным идентификатором файла и параметрами для операции. Например, запрос ajax для обрезки файла следующим образом: http://x.com/api/crop?fileID=19482302&x=0&y=0&h=1024&w=2048.

  4. Когда сервер получает запрос Ajax, он использует уникальный идентификатор, чтобы найти, с каким файлом он связан, применяет операцию и возвращает результаты.

  5. Клиент получает результаты и отображает все, что нужно, чтобы отображать результаты.

  6. Чтобы не создавать неиспользуемые файлы на сервере, серверу, вероятно, придется «стареть» файлы, которые больше не используются. Для этого вы можете создать какое-то истечение срока действия. При доступе к файлу регистрируется последнее время доступа. Затем у вас может быть периодический таймер (скажем, каждый час), который циклически проходит через файлы и удаляет всех, к которым в последнее время не обращались (скажем, в последний день или 6 часов или какое-то время, подходящее для вашего приложения).

+0

Благодарим за помощь. Считаете ли вы, что в этом случае websockets может помочь? Если да, пожалуйста, уточните, как использовать websockets для этого. –

+0

@Techenthusiast - Из того, что вы описали, я не вижу особых причин использовать для этого web-сокеты. Схема, которую я описал, будет отлично работать с аякс-вызовами и не требует веб-сокетов. webSockets требуется, когда вы хотите отправлять данные в реальном времени с сервера на клиент, когда это происходит, а не как ответ на запрос клиента. Вы не описали это как требование здесь. – jfriend00

+0

@Techenthusiast - Схема может быть создана для работы с веб-сокетами, где каждая веб-сторона на стороне сервера была связана, когда загруженный файл и любые запросы на этот веб-узел будут применены к этому связанному файлу.Но я лично не вижу причин делать это так, а не просто использовать запросы Ajax, как описывает мой ответ. – jfriend00

Смежные вопросы