Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Простая загрузка файлов






Сейчас рассмотрим стандартный пример загрузки файла на сервер, и больше никогда не будем пользоваться таким способом. Класс SimpleFileView для взаимодействия (/Models/Info/SimpleFileView.cs):

public class SimpleFileView

{

public HttpPostedFileBase UploadedFile { get; set; }

}

Обратите внимание на наименование класса для приема файлов. Итак, создадим контроллер SimpleFileController (/Areas/Default/Controllers/SimpleFileController.cs):

public class SimpleFileController: DefaultController

{

[HttpGet]

public ActionResult Index()

{

return View(new SimpleFileView());

}

 

[HttpPost]

public ActionResult Index(SimpleFileView simpleFileView)

{

return View(simpleFileView);

}

}

И добавим View:

@model LessonProject.Models.Info.SimpleFileView

@{

ViewBag.Title = " Index";

Layout = " ~/Areas/Default/Views/Shared/_Layout.cshtml";

}

 

< h2> Index< /h2>

 

@using (Html.BeginForm(" Index", " SimpleFile", FormMethod.Post, new {enctype = " multipart/form-data", @class = " form-horizontal" }))

{

< fieldset>

< div class=" control-group" >

< label class=" control-label" for=" Email" >

Загрузите файл: < /label>

< div class=" controls" >

@Html.TextBox(" UploadedFile", Model.UploadedFile, new { type = " file", @class = " input-xlarge" })

@Html.ValidationMessage(" UploadedFile")

< /div>

< /div>

< div class=" form-actions" >

< button type=" submit" class=" btn btn-primary" >

Upload< /button>

< /div>

< /fieldset>

}

 

Обратите внимание, на enctype в атрибутах формы и на type в атрибутах TextBox (на самом деле тип еще бывает password, checkbox, radio, но для них есть соответствующие методы в @Html-классе). Enctype необходимо установить в “multipart/form-data”, чтоб была возможность загрузить большой объём информации.

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


 

Первый недостаток – это то, что во всех браузерах форма выбора файла выглядит по-разному:

Конечно, ведь дизайнер представляет себе, что загрузка файлов выполняется как в Safari, а заказчик проверяет в Chrome и IE, и начинает спрашивать у разработчиков: «Что за самодеятельность?»

Второй недостаток –если форма не прошла валидацию, то эти поля необходимо выбрать заново. Т.е. есть такая форма:

· Имя

· Фамилия

· Электронная почта

· Дата рождения

· Фотография

· Фотография первого разворота паспорта

· Фотография второго разворота паспорта

· Фотография паспорта с пропиской

· Пароль

· Пароль еще раз

· Капча

И вдруг вы набрали пароль неверно, или капчу не так ввели, или фотография второго разворота паспорта слишком большая, или вы забыли перегнать из raw-формата в jpeg.

В итоге фотографии, прописку и капчу надо вводить заново. Естественно, это совсем не user friendly, и раздражает заказчика (к тому же дизайнер нарисовал красиво, а выглядит убого).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.