Поделиться через


Общие сведения о серверном веб-элементе управления FileUpload

Обновлен: Ноябрь 2007

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

В этом разделе рассматриваются следующие темы:

  • Функциональные возможности

  • Общие сведения

  • Примеры кода

  • Ссылка на классы

Функциональные возможности

Элемент управления FileUpload позволяет выполнять следующие действия:

  • Позволяет пользователям передавать файлы, сохраненные в определенном расположении на сервере.

  • Ограничивать размер передаваемого файла.

  • Проверять свойства загружаемого файла перед его сохранением.

К началу

Базовые сведения

Элемент управления FileUpload позволяет пользователям передавать изображения, текстовые файлы и иные файлы. Элемент управления FileUpload отображает текстовое поле, в котором пользователи могут ввести имя файла, который необходимо передать на сервер. Элемент управления также отображает кнопку Обзор, которая выводит диалоговое окно перехода к файлам. (Отображаемое диалоговое окно зависит от операционной системе на компьютере пользователя.) Из соображений безопасности нельзя заранее загружать имя файла в элемент управления FileUpload.

Обработка переданных файлов

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

Существуют следующие способы доступа к переданному файлу:

  • Как массив байтов, предоставляемый в свойстве FileBytes элемента управления FileUpload.

  • Как поток, предоставляемый в свойстве FileContent.

  • Как объект типа HttpPostedFile в свойстве PostedFile. Объект PostedFile предоставляет свойства, например свойства ContentType и ContentLength, которые выводят сведения о переданном файле.

При выполнении кода можно проверить характеристики файла, например имя, размер и тип MIME, а затем сохранить их. Можно работать с файлом как массив байтов или поток. Также элемент управления FileUpload и объект HttpPostedFile поддерживают метод SaveAs для записи файла на диск.

Присущие ограничения на место сохранения переданных файлов отсутствуют. Однако для сохранения файла процесс ASP.NET должен обладать разрешением на создание файлов в указанном местоположении. Кроме того, приложение может быть настроено таким образом, чтобы для сохранения файла требовался абсолютный, а не относительный путь, что является мерой обеспечения безопасности. Если для атрибута requireRootedSaveAsPath элемента конфигурации httpRuntime установлено значение true (которое является значением по умолчанию), необходимо указать абсолютный путь при сохранении переданного файла.

ms227677.alert_note(ru-ru,VS.90).gifПримечание.

Можно создать абсолютный путь на основании корня приложения с помощью метода MapPath класса HttpServerUtility и путем передачи в метод оператора тильда (~), который представляет корневую папку приложения. Дополнительные сведения см. в разделе Путь к веб-узлу ASP.NET.

Максимальный размер файла, который можно передать на сервер зависит от значения параметра конфигурации MaxRequestLength. Если пользователи пытаются передать файл, размеры которого превышают максимальное установленное значение, происходит сбой передачи.

Использование элемента управления FileUpload во время частичных обновлений страницы

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

Безопасность и элемент управления FileUpload

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

ms227677.alert_note(ru-ru,VS.90).gifПримечание.

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

Примеры кода

Практическое руководство. Передача файлов с помощью серверного веб-элемента управления FileUpload

К началу

Ссылка на класс

В следующей таблице перечислены классы, связанные с элементом управления FileUpload.

Член

Описание

FileUpload

Основной класс для элемента управления FileUpload.

К началу

См. также

Ссылки

HtmlInputFile