Событие asp.net FileUpload после выбора и перед отправкой на загрузку - PullRequest
8 голосов
/ 06 мая 2009

Я хотел бы отобразить размер файла, который был выбран с помощью кнопки «Обзор» элемента управления FileUpload.

В идеале это значение отображается сразу после того, как пользователь выбрал файл, но ДО нажатия кнопки «Загрузить файл».

У меня есть и на веб-форме. Кнопка выглядит следующим образом:

<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>         

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

Я знаю, как получить размер файла, но не раньше, чем нажимается кнопка «Загрузить файл» и происходит обратная передача.

Есть ли событие, связанное с веб-элементом управления FileUpload, которое могло бы отправить форму (то есть обратную передачу) без нажатия кнопки?

Весь смысл в том, что я хочу дать пользователю представление о том, сколько времени может занять загрузка ... установить другое ожидание для файла 10 МБ, чем для файла 2 КБ и т. Д.).

1 Ответ

14 голосов
/ 06 мая 2009

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

Это можно сделать только с помощью какого-либо элемента управления ActiveX . Я бы порекомендовал использовать что-то вроде Silverlight FileUploader , поскольку он получает размер файла перед отправкой назад и даже имеет хороший индикатор прогресса.

ОБНОВЛЕНИЕ: Если вы хотите инициировать обратную передачу или запрос Ajax после того, как пользователь нажмет на просмотр, событие на стороне клиента будет «onchange». Вот пример того, как использовать событие onchange.

<asp:FileUpload runat="server" 
    onchange="alert('you selected the file: '+ this.value)" />

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

Вот еще одна рекомендация: есть плагин jQuery, который использует flash для определения размера файла перед загрузкой, и он очень прост в использовании. Проверьте это на jQuery Uploadify

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