В этом разделе описываются два метода, используемые в ASP.NET для загрузки файлов на веб-страницы.
ASP.NET включает два элемента управления, которые позволяют пользователям загружать файлы на веб-сервер. Как только сервер примет загруженные данные файла, приложение может сохранить их, проверить или проигнорировать. Следующий элемент управления позволяет загружать файлы:
HtmlInputFile — элемент управления HTML-сервером.
FileUpload — веб-элемент управления ASP.NET
Оба элемента управления позволяют загружать файлы, но элемент управления FileUpload автоматически устанавливает формат кодировки, а элемент управления HtmlInputFile — нет.
В этом уроке мы будем использовать элемент управления FileUpload. Этот элемент управления позволяет пользователю предварительно просмотреть выбранный файл для загрузки. Он предоставляет кнопку предварительного просмотра и текстовое поле, в которое можно ввести имя файла.
Как только пользователь вводит имя файла в текстовое поле или просматривает файл, метод SaveAs элемента управления FileUpload сохраняет файл на жесткий диск.
Основной синтаксис FileUpload следующий:
<asp:FileUpload ID= "Uploader" runat = "server" />
Класс FileUpload является производным от класса WebControl и наследует все его элементы. Класс FileUpload имеет следующие свойства, доступные только для чтения:
свойство | описывать |
---|---|
ФилеБайтс | Возвращает набор байт-кодов для загружаемого файла. |
Содержимое файла | Возвращает объект потока файла, который необходимо загрузить. |
Имя файла | Возвращает имя файла, который будет загружен |
Хасфиле | Определите, есть ли у элемента управления файлы для загрузки |
ОпубликованФайл | Возвращает ссылку на загруженный файл |
Опубликованный файл инкапсулируется в объект в форме HttpPostedFile, доступ к которому можно получить через свойство PostedFile класса FileUpload.
Класс HttpPostedFile имеет следующие часто используемые свойства:
свойство | описывать |
---|---|
Контентдлина | Возвращает размер загруженного файла в байтах |
Контенттипе | Возвращает MIME-тип загруженного файла. |
Имя файла | Вернуть полное имя файла |
Входной поток | Возвращает объект потока файла, который необходимо загрузить. |
В следующем примере показан элемент управления FileUpload и его свойства. Эта форма имеет элемент управления FileUpload, а также кнопку сохранения и элемент управления меткой с фактическим именем, типом и длиной файла.
В режиме конструктора таблица выглядит так:
Соответствующие коды файлов перечислены ниже:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
Код для кнопки сохранения указан ниже:
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
Обратите внимание на следующие вопросы:
Класс StringBuilder создается из пространства имен System.IO, поэтому его следует включить.
Области try и catch используются для обнаружения ошибок и отображения сообщений об ошибках.