2009-09-25 5 views
1

Я пытался реализовать загрузку файла в стиле ajax. Мне было интересно, что мы должны сделать, чтобы сообщить о ходе загрузки. Я пытаюсь реализовать это на моей веб-странице asp.net.Как сообщается о ходе загрузки файла?

Я понимаю механизм, с помощью которого мы можем загрузить файл, ajax-style, на веб-страницу. Я много раз рассказывал о том, как показывать индикатор прогресса, но я не вижу правильных объяснений. Но я понял, что нам нужно управлять этим с серверной стороны каким-то образом. (cf file upload progress)

Любые идеи/код будут оценены. Thanx заранее.

ответ

1

Я не уверен, почему вы хотите сворачивать самостоятельно, так как есть несколько элементов управления загрузкой с использованием Ajax, Flash, Silverlight и т. Д. Тем не менее, концепция касается запросов на прогресс и возврата текущего состояния. This guy went through the same process and shows how he built a component using jQuery.

Отображение прогресса требует, чтобы ваш клиент получал обратную связь с вашего сервера. Это означает, что на ваш сервер повторяются запросы для достижения прогресса. Отобразите прогресс на вашем клиенте, используя эту информацию.

На вашем сервере вы должны не только принимать входящие файлы, но и отвечать на совокупный прогресс. Легко получить заголовок Content-Length, переданный в запросе; проблема заключается в том, что вы не сможете полагаться на эту информацию. Существуют стратегии борьбы с этим, но для этого требуется, чтобы у вас был код, который принимает загруженный файл, так как вам придется читать входящие биты.

На данный момент у вас есть другие вещи, о которых стоит заботиться, которые находятся далеко за пределами области выполнения, например, при обработке больших загрузок файлов на вашем веб-сервере (вне процесса намного менее вредно на ваш сервер.)

Из-за сложностей, связанных с этим, я бы рекомендовал вам найти существующий компонент вместо создания собственного.

+0

, когда вы имеете в виду «получение обратной связи с вашего сервера», означает ли вы, что на том же конвейере запроса, на котором происходит загрузка? Это возможно? – deostroll

+0

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

+0

Какова стратегия использования? – deostroll

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