Может кто поделится готовым кодом Upload для веба?

Тема в разделе "Lotus - Программирование", создана пользователем Gandliar, 12 сен 2011.

  1. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Привет!

    Может кто поделится готовым кодом реализации загрузки файлов на сервер?

    Что есть:

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

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

    Чего хотелось бы:

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

    Или какой то лучший вариант. заранее благодарю.

    Основная страничка не должна перегружатся
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Гугл отменили?
     
  3. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    не отменили, только тут есть ньюансы
     
  4. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    В итоге получается что файлы отправляются через генерацию скрытых iframe.
    Код потиху доделываю, неужели никто этим не занимался для домины?
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    На сколько мне помнится веб для домины, то:
    - нельзя без post формы с upload загрузить вложение;
    - нельзя передать в upload путь к файлу, т.е. пользователь непосредственно должен управлять этим элементом, чтобы загрузить файл;
    Соответственно, нельзя генерить скрытые окна для загрузки файлов, нельзя загрузить файл без перезагрузки окна формы загрузки (хотя, если основная страничка имелась в виду другая, то это замечание опускаем).

    Вот по открытию нового окна без перегрузки открытого можно подумать, не свойство target ли управляет этим процесом?

    Если надо дать пользователю возможность загрузить сразу несколько файлов с одной формы, лучше сделать несколько upload на одной форме, но скрывать все кроме одного неуказанного.
    Сделать это, в общем, не сложно, если иметь навыки работы с JS, эдинственный недостаток, который помнится, это заранее ограниченное кол-во upload - их необходимо разместить на нотес-форме, генерить динамически не получится, иначе при post формы сервер их не примет. Сервер принимает лишь те поля формы, которые есть на форме "в дизайнере".
    А чтобы пользователь не мог открыть еще одно такое же окно для загрузки файлов, то следует мониторить такие открытые окна, давать открыть только одно. Можешь поискать реализацию модальных окон на JS.

    Все чем может помочь ajax, в даном случае, это уже формировать список загруженных файлов на основной странице, периодически опрашивая сервер. Но никак не сохранять файлы.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Ты хоть уточни, что именно можно :) К сожалению, мой веб уснул на R6-7...
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    по ссылкам :)
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    По генерации что-то увидел, хотя не разбираюсь в х-страницах, а вот по поводу управления тем, что будет закачано не увидел.
    На сколько я понимаю, то управление тем, что будет закачано ограничено в связи с безопасностью - закачивается лишь то, что указал пользователь самостоятельно.
    Ну да это лирика, в общем :)
     
  10. valmont

    valmont Well-Known Member

    Регистрация:
    27 дек 2004
    Сообщения:
    63
    Симпатии:
    0
    да конечно всё делали и всё прекрасно работает, и с перезагрузкой страницы и с ajax...
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    valmont
    ))) ты уж извини, но как снег летом с неба.
    Кто делал, что делал, где делал, как делал, как работает? :)
     
  12. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Подведу итог, чем закончилось мое копание:

    Сделал псевдо модальное окно на основе div (с затемнением экрана), в котором на javascript создается форма (при первом вызове), в нее передается урл, по которому создается документ с файлом, и имя поля в uploadControl. В окне пользователь присоединяет файл и нажимает отправить. При отправке создается случайный iframe, который назначается в target формы и определяется функция при onload этого фрейма в которой сидит обработчик действий после загрузки файла. А сервер по итогу загрузки файла возвращает необходимые данные которые используются обработчиком. Сча тестирую.
     
  13. mmm

    mmm Гость

    День добрый, Gandliar!
    Выпало мне решать точно такуюже задачу с upload. Решил ее с помощью создания нового окна и формы, и после загрузки файла, агент на QuerySave закрывает окно и передает файл в основной документ и удаляет временную форму. Все работает, но возникла такая же проблема с нерадимыми пользователями, которые открывают несколько окон или отправляют файл в уже закрытый документ. Еще имеется похожее диалоговое окно со списком пользователей которое также открывается в отдельном окне с формой и имеет такие же проблемы с пользователями.
    Очень хочется создать форму в форме с затемнением, что бы приоткрытие второй они на это время ничего немогли сделать с исходной.
    Мож поподробнее расказать как получилось это сделать это с помощью iframe или скинуть пример на почту utkit@ya.ru . С программированием домино под веб я только начинаю работать и поэтому никак не получается красиво решить данную задачку.
    Спасибо!
     
  14. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Итоговое решение удобно и просто сделать с помощью dojo
    dojo входит в стандартную поставку домино сервера с 8.5 помоему. Единственно что уточнить надо какое дожо стоит на конкретной версии вашего сервера, чтобы подключать правильный каталог.

    Ссылка на почитать на диджит диалог с примерами

    http://dojotoolkit.org/reference-guide/1.7...ml#dijit-dialog

    еще одна ссылка

    http://oooportal.ru/?cat=article&id=1833

    Подход такой

    Делаете форму для аплоада файлов, вызываете ее в диджит диалоге, сохраняете, возвращает унид документа с файлом, обрбрабатываете
     
  15. mmm

    mmm Гость

    Спасибо, буду пробовать разбираться свиджетами. Нормально ли они работают в браузерах на планшетах и смартфонах?

    Получилось ли сделать решение без виджетов с помощью DIV или iframe? Мне надо сделать универсальное решение диалогового окна с затемнением не только для загрузки файлов, а еще для выбора из списка пользователей или организаций (и работой на планшетах). Сейчас это так же работает с помощью отдельного окна, из-за чего возникают проблемы у пользователей. Хотелось бы данную функциональность так же перенести в создание формы в форме с затемнением окна.
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    использование фрэймворков (коим и является dojo) является "стандартом", а вто всякие "iframe" могут привести к глюкам и необходимости костылей...
    dojo - потому как идёт в составе домины
    фрэймворки позволяют абстрагироваться от устройств, браузера и т.п. шняги
     
Загрузка...

Поделиться этой страницей