AsyncFileUpload ограничивает размер файла для загрузки - PullRequest
4 голосов
/ 13 июня 2011

Я использую AsyncFileUpload, чтобы позволить пользователям асинхронно загружать файлы.

Я хочу ограничить размер файла до 1 МБ.

Что касается того, что я виделЯ могу получить только длину файла после завершения загрузки

, например, когда начинается загрузка:

(OnClientUploadStarted)

function UploadStarted(sender,args) 
{
   //if bigger than 1MB (approximately)
   if (args.get_length() > 1000000 ) 
   {
       ShowActionNotificationError( errorMessage); 
       return false;  
    }
}

args.get_length () равно нулю, поэтомуЯ не могу его использовать ...

И когда загрузка завершена:

(OnClientUploadComplete)

function UploadComplete(sender,args) 
{
    //if bigger than 1MB (approximately)
    if (args.get_length() > 1000000 ) 
    {
        ShowActionNotificationError( errorMessage); 
        return false;  
    }
}

работает нормально, но файл уже загружен ...

Итак, как узнать размер файла перед его загрузкой?я упускаю что-то очень простое?

Я действительно хотел бы сделать это без обработки длины HTTP-запроса и сортировки.

Спасибо!

Ответы [ 6 ]

5 голосов
/ 14 июня 2011

После некоторых существенных исследований я понимаю, что это невозможно сделать с помощью AJAX.

Когда я смотрю на такие сайты, как Yahoo Mail и Gmail, это делает Flash.

в Hotmail это сделано с Silverlight.

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

Сейчас я работаю над его интеграцией.

если я ошибаюсь, поправьте меня! :)

4 голосов
/ 09 декабря 2013

Вы можете сделать это в событии «Начало загрузки» на стороне клиента.

if (sender._inputFile.files[0].size >= maxFileSize) {
    sender._stopLoad();
}

_stopLoad вызовет событие «Ошибка загрузки».

0 голосов
/ 29 июля 2013

CERO 14 февраля '12 в 5: 51

FileUpload1 no работает для UpdatePanel:

Элементы управления, которые не совместимы с элементами управления UpdatePanel

Следующие элементы управления ASP.NET не совместимы с частичными обновлениями страниц и поэтому не предназначены для работы внутри элемента управления UpdatePanel:

Управление Treeview при нескольких условиях. Один из них, когда обратные вызовы включены, которые не являются частью асинхронной обратной передачи. Другой это когда Вы устанавливаете стили непосредственно как управляющие свойства вместо стилизация элемента управления с использованием ссылки на стили CSS. Еще один когда свойство EnableClientScript имеет значение false (по умолчанию установлено значение true). Другой вариант - если вы измените значение свойства EnableClientScript между асинхронными обратными вызовами.

Элемент управления меню, когда вы устанавливаете стили непосредственно как свойства элемента управления вместо неявной стилизации элемента управления с использованием ссылки на CSS стили.

Элементы управления FileUpload и HtmlInputFile, когда они используются для загрузки файлы как часть асинхронной обратной передачи.

Элементы управления GridView и DetailsView, когда их Свойство EnableSortingAndPagingCallbacks имеет значение true. По умолчанию ложно.

Элементы управления Login, PasswordRecovery, ChangePassword и CreateUserWizard чье содержимое не было преобразовано в редактируемые шаблоны.

Контроль замещения.

Чтобы использовать элемент управления FileUpload или HtmlInputFile внутри элемента управления UpdatePanel, установите элемент управления обратной передачи, который отправляет файл в качестве элемента управления PostBackTrigger для панели. Элемент управления FileUpload и HtmlInputFile можно использовать только в сценариях обратной передачи.

0 голосов
/ 14 февраля 2012

Если вам необходимо проверить размер файла до того, как содержимое действительно будет загружено на сервер, то лучше использовать asp-компонент FileUpload. При этом вы можете проверить и решить, хотите ли вы загрузить файл или нет.

If FileUpload1.FileContent.Length <= DesiredFileSize Then

   <<Code to Upload the file>>

End If
0 голосов
/ 01 января 2012

Да, то, что сказал Митхир, верно.Это действительно громоздко, чтобы дать современный пользовательский опыт, используя контроль HTML.Другая альтернатива - SWFUpload

0 голосов
/ 13 июня 2011

Проверить его размер можно методом FileUploadComplete на стороне сервера

void FileUploadComplete(object objSender, AsyncFileUploadEventArgs e)
{
  if (e.get_length() > 1000000 )
  {  
      ShowActionNotificationError( errorMessage);
      return false;
  }
}
...