Загрузка файла в AJAX updatepanel без полной обратной передачи - PullRequest
20 голосов
/ 28 апреля 2009

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

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


У кого-нибудь есть решение этой проблемы?

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

Ответы [ 6 ]

36 голосов
/ 28 апреля 2009

Для решения этой проблемы см. Следующий шаг.

  1. Добавьте ajax-upload к вашему детальному виду.
    • загрузчик на основе iframe как ресурс № 1.
    • Загрузчик на основе Silverlight и Flash. Мне нравится этот метод, потому что для отображения текущего состояния загрузки не требуется сценарий на стороне сервера. Но в HTML5 это можно создать без использования какого-либо плагина веб-браузера.
    • Коммерческий загрузчик, такой как Resource # 2. , который использует скрытый iframe для загрузки.
  2. Загрузить файл во временную папку.

    • Ответ системы о временном местоположении. Далее клиент сохраняет временное местоположение в скрытом виде в подробном виде.
    • Сохранять временное местоположение с помощью session_id. Вы можете сохранить его в базе данных или в зависимости от вашей переменной.
  3. При нажатии на кнопку сохранения система переместит файлы в их реальное местоположение

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

Ресурс

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

Обновление

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

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

4 голосов
/ 28 апреля 2009

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

1 голос
/ 10 июня 2009

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

0 голосов
/ 12 июня 2009

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

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

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

0 голосов
/ 11 июня 2009

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

0 голосов
/ 08 июня 2009

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

HTH

ONESHOT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...