Загрузка файла в панель обновлений AJAX без полного постбека

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

Точный сценарий, у меня 8 вкладок на странице, каждая вкладка содержит слишком много информации, одна из вкладок - это вложение, когда пользователь нажимает на Добавить новое вложение, отображается модальное всплывающее окно, модальное окно содержит подробный просмотр в панели обновлений, а в подробном обзоре у меня есть элемент управления загрузкой файлов, когда Пользователь нажал кнопку сохранить, активировано событие вставки подробного просмотра. В событии вставки мне нужен файл, который я загрузил.
Обратите внимание, у меня тяжелая страница, и я не хочу возвращать ее полностью.


Есть ли у кого-нибудь решение этого вопроса?

Заранее спасибо за вашу любезную помощь .....


person Muhammad Akhtar    schedule 28.04.2009    source источник


Ответы (6)


Чтобы решить эту проблему, см. Следующий шаг.

  1. Add ajax-upload to your detail view.
    • iframe-based uploader like Resource#1.
    • Программа загрузки на основе Silverlight и Flash. Мне нравится этот метод, потому что он не требует никаких серверных скриптов для отображения текущего статуса загрузки. Но в HTML5 вы можете создать это без использования каких-либо подключаемых модулей веб-браузера.
    • Коммерческий загрузчик, например Ресурс № 2, который использует скрытый iframe для загрузки.
  2. Загрузите файл во временное хранилище.

    • System response the temporary location. Next, client keep temporary location in hidden input in detail form.
    • Сохранять временное местоположение с помощью session_id. Вы можете сохранить его в базе данных или переменной сеанса в зависимости от вашей платформы.
  3. Когда вы нажимаете кнопку сохранения, система перемещает файлы в их реальное местоположение.

Примечание. Система автоматически удалит файл с истекшим сроком годности из временного хранилища.

Ресурс

  1. Загрузка файла ASP.NET с помощью индикатора выполнения в режиме реального времени
  2. Загрузка файла ASP.NET, например GMail (коммерческий)

Обновить

Спустя почти год я только что нашел отличный сторонний контроль для этого вопроса. Это плагин jQuery с открытым исходным кодом. Он называется Plupload, который позволяет загружать файлы с помощью HTML5, Silverlight, Flash или обычных форм, а также предоставляет некоторые уникальные функции, такие как ход загрузки, изменение размера изображения и фрагментированные загрузки.

Вы можете попробовать и протестировать Plupload, нажав здесь.

person Soul_Master    schedule 28.04.2009
comment
Отличный ответ. Я бы проголосовал за ... но я выбежал на сегодня !! Кто-нибудь поставит этому парню +1. - person jrista; 06.06.2009
comment
То, что он делает, поместил элемент управления загрузкой файлов на другую страницу и в форму вложения, взял IFRAME и установил исходную страницу управления загрузкой файлов. На странице управления загрузкой файла AsyncPostBack отправляется обратно и загружается прикрепленный файл .... Но у меня здесь другой сценарий. Как я уже упоминал в своем вопросе, у меня есть подробный просмотр, а в подробном обзоре у меня есть элемент управления fileUpload и другая информация, когда Пользователь нажал кнопку «Сохранить». Мне нужна двоичная информация об изображении на одной странице, а не на другой. Кстати, в моем сценарии это не решение .... Спасибо за ответ - person Muhammad Akhtar; 11.06.2009
comment
Этот тип решения я внедрил сам рано, но не поможет в моем сценарии. - person Muhammad Akhtar; 11.06.2009
comment
Для вашего запроса вы должны изменить свои текущие данные, чтобы узнать подробности, см. Мой обновленный ответ. - person Soul_Master; 12.06.2009
comment
Точный сценарий, у меня 8 вкладок на странице, каждая вкладка содержит слишком много информации, одна из вкладок - это вложение, когда пользователь нажимает на Добавить новое вложение, отображается модальное всплывающее окно, модальное окно содержит подробный просмотр в панели обновлений, а в подробном обзоре у меня есть элемент управления загрузкой файлов, когда Пользователь нажал кнопку сохранить, активировано событие вставки подробного просмотра. В событии вставки мне нужен файл, который я загрузил. Обратите внимание: у меня тяжелая страница, и я не хочу возвращать ее полностью. - person Muhammad Akhtar; 12.06.2009
comment
В модальном всплывающем окне есть DetailsView, в котором существует элемент управления загрузкой файла и другие элементы управления, пользователь нажимает кнопку SAVE, мне нужно сохранить двоичную информацию File (любой тип файла) и другие детали в БД. - person Muhammad Akhtar; 12.06.2009
comment
Я очень ценю ваши быстрые ответы. Большое спасибо - person Muhammad Akhtar; 12.06.2009
comment
Можете ли вы применить мой ответ для решения вашей проблемы? В чем твоя проблема? Пожалуйста, дай мне знать. - person Soul_Master; 12.06.2009
comment
Точный сценарий: у меня 8 вкладок на странице, каждая вкладка содержит слишком много информации, одна из вкладок - это вложение, когда пользователь нажимает на Добавить новое вложение, отображается модальное всплывающее окно, модальное всплывающее окно содержит подробный просмотр в панели обновления, а в подробном обзоре у меня есть контроль загрузки файлов и другой элемент управления, когда пользователь нажимает кнопку сохранить, запускается событие вставки подробного просмотра. В событии вставки DetailsView мне нужна двоичная информация о вложении. Обратите внимание, что мне нужен файл / вложение. подробности на той же странице. Спасибо - person Muhammad Akhtar; 12.06.2009
comment
Можете ли вы предоставить свой адрес электронной почты, я пришлю вам изображения по электронной почте, вы четко поймете мою проблему, спасибо за ВАШУ помощь - person Muhammad Akhtar; 12.06.2009
comment
Soul_Master -------------- live.com - person Soul_Master; 12.06.2009
comment
Я думаю, у вас проблемы с DetailView? вы не можете изменить DetailView, добавив элемент управления загрузкой ajax или какую-либо проблему или другую проблему. - person Soul_Master; 12.06.2009

Невозможно обойтись без установки на клиенте совместных двоичных файлов. Для платформы AJAX не существует безопасного механизма для чтения содержимого файла и, следовательно, для отправки его на сервер. Браузер поддерживает это только как публикацию из нескольких частей из поля ввода файла.

person AnthonyWJones    schedule 28.04.2009
comment
Спасибо за быстрый ответ. Есть какие-нибудь уловки или обходные пути, чтобы добиться этого? - person Muhammad Akhtar; 28.04.2009
comment
Здесь нет никаких уловок или обходных путей, это вопрос безопасности, это было бы небезопасно, если бы был рабочий раунд. Подумайте о том, что мог бы сделать злонамеренный кодировщик, если бы такой рабочий цикл существовал, и тогда вы поймете, почему такого рода вещи заблокированы. - person AnthonyWJones; 28.04.2009

Проблема заключается в том, как работает элемент управления загрузкой файла HTML, он не имеет ничего общего с ASP.net, для работы элемента управления загрузкой файла вам потребуется полная публикация данных формы. Вы можете только смоделировать, что вы не выполняете полную обратную передачу, выполнив все операции в скрытом iframe, который выполняет фактическую загрузку

person Jaime    schedule 09.06.2009
comment
Возможно, вам нужно предоставить больше информации, чтобы получить больше голосов, но то, как вы описываете, по сути, это то, как сайты, такие как GMail, выполняют загрузку Ajax. - person Craig; 12.06.2009

Сайты, которые вы видите, которые предоставляют эту функцию, обычно используют flash или iframe, так что обратная передача происходит в iframe и создает иллюзию запроса ajax.

HTH

Один выстрел

person OneSHOT    schedule 08.06.2009
comment
если вы используете IFrame, информация о загруженном файле будет доступна только в источнике страницы IFrame - person Muhammad Akhtar; 08.06.2009
comment
но у меня нет такого сценария, я пробовал это решение. - person Muhammad Akhtar; 08.06.2009

Я пробовал swfupload (http://swfupload.org/), но имейте в виду, что вам необходимо прыгайте через обручи, если вы используете проверку подлинности с помощью форм в браузерах, отличных от IE. По-видимому, это ошибка флэш-памяти, и она не исправлена ​​во флэш-10. Я решил не использовать ее в нашей структуре из-за этой ошибки, но в остальном это был отличный продукт.

person ScottE    schedule 11.06.2009

Я рекомендую виджет загрузчика от YUI. См. http://developer.yahoo.com/yui/uploader/.

Я думаю, вы могли бы использовать это для достижения своей цели. Вашему javascript потребуется вернуть файл клиенту с сервера после того, как он завершит загрузку. Но страница не обновлялась - загрузка происходит через флеш-память и скрытый iframe. Загрузка для отображения содержимого файла пользователю будет осуществляться через ajax.

Если пользователь не «одобряет» загрузку, просто сделайте еще один вызов ajax серверу, чтобы удалить файл.

person Larry K    schedule 12.06.2009