Как загрузить файлы в приложение ASP.NET MVC

  1. Основы загрузки файлов
  2. Загрузка одного файла
  3. Помните о безопасности!
  4. Загрузка нескольких файлов

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

В ASP.NET MVC существует множество компонентов для загрузки, которые служат для решения тех или иных задач загрузки, например, вам может понадобиться загрузить один или несколько файлов, работать с файлами небольшого или очень большого размера, передавать только целые папки или файлы Просто загрузите изображения или Preprsdfsdf SD SD заранее. Таким образом, вам нужно найти инструмент загрузки, который не только быстрый и надежный, но и соответствует вашим требованиям.

Здесь мы рассмотрим, какой подход загрузки лучше использовать, когда, но перед этим давайте посмотрим на загрузку файлов ASP.NET MVC в целом.

Основы загрузки файлов

В процессе загрузки файла только две части модели MVC взаимодействуют друг с другом - представление и контроллер. Давайте рассмотрим процесс загрузки файла шаг за шагом:

  1. Пользователь заходит на веб-страницу с загрузчиком (представленным представлением) и выбирает файлы для загрузки.
  2. Когда загрузка начата, загрузчик упаковывает файлы в запрос POST и отправляет этот запрос на сервер.
  3. ASP.NET кэширует все данные в памяти сервера или на диск в зависимости от размера загружаемого файла.
  4. ASP.NET MVC определяет контроллер и соответствующий метод действия, который будет обрабатывать запрос.
  5. Метод action обрабатывает запрос (например, сохраняет файлы на жестком диске или обновляет базу данных и т. Д.) Через свойство Controller.Request, которое получает объект HttpPostedFilesBase для текущего запроса.
  6. ASP.NET MVC отправляет ответ клиенту через Controller.Response.

Вы можете настроить параметры загрузки файлов, указав соответствующие атрибуты в файле web.config (или machine.config, если вы хотите внести изменения на уровне сервера). Давайте посмотрим, какие атрибуты используются для ограничения загрузки файла:

  • maxRequestLength - ограничение размера запроса в килобайтах (значение по умолчанию 4096 КБ).
  • requestLengthDiskThreshold - лимит данных в буфере в памяти сервера в килобайтах (значение по умолчанию - 80 КБ).
  • executeTimeout - допустимое время выполнения запроса до его автоматического отключения ASP.NET (значение по умолчанию - 110 секунд).

Все эти атрибуты должны быть указаны в разделе <httpRuntime>.


Примечание. Избегайте указания там «неограниченных» (очень больших) значений. Указывая реалистичные ограничения, вы можете повысить производительность вашего сервера или снизить риск DoS-атак.

Мы в основном описали, как ASP.NET MVC организует загрузку файлов. Однако если мы углубимся в это, мы поймем, что загрузка файла также зависит от реализации View: это могут быть простые элементы <input type = ”file”>, HTML5, Flash, Java или существующий сторонний загрузчик. Приложения. Давайте начнем с первого - загрузки одного файла с использованием элемента управления HTML.

Загрузка одного файла

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

Во-первых, мы рассмотрим мнение. Наше представление состоит из HTML-формы, содержащей кнопку, которая открывает диалог выбора файла, и Submit , который отправляет выбранный файл на сервер в запросе POST. Код представления с синтаксисом бритвы может выглядеть следующим образом:

<h2> Основная загрузка файла </ h2> @using (Html.BeginForm ("Индекс", "Домой", FormMethod.Post, new {enctype = "multipart / form-data"})) {<label for = "file "> Загрузить изображение: </ label> <input type =" file "name =" file "id =" file "/> <br> <br> <input type =" submit "value =" Загрузить изображение "/> < br> <br> @ ViewBag.Message}

Давайте выделим важные части:

  • Метод Html.BeginForm создает форму HTML, которая включает в себя элемент управления файлом HTML, кнопку отправки и сообщение, в котором указывается, успешно ли сохранен файл.
  • Метод form - это POST, а тип кодировки - multipart / form-data. Эти параметры необходимы для загрузки двоичных данных на сервер.
  • Элемент ввода, имеющий тип = «файл», отображает кнопку « Выбрать файл» и поле, содержащее имя выбранного файла.
  • Имя входного элемента идентифицирует загруженный файл в объекте HttpPostedFilesBase.

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

Используя этот подход, вам не нужно читать файл из запроса, потому что вы можете получить доступ к файлу POST непосредственно через объект HttpPostedFilesBase из-за привязки модели. Модель действия выглядит так:

[HttpPost] общедоступный указатель ActionResult (файл HttpPostedFileBase) {if (file! = Null && file.ContentLength> 0) try {string path = Path.Combine (Server.MapPath ("~ / Images"), Path.GetFileName (file. Имя файла)); file.SaveAs (путь); ViewBag.Message = "Файл успешно загружен"; } catch (Exception ex) {ViewBag.Message = "ERROR:" + ex.Message.ToString (); } else {ViewBag.Message = "Вы не указали файл."; } return View (); }

Метод действия получает загруженный файл, пытается сохранить его в папке « Изображения » и показывает сообщение, указывающее, успешно ли сохранен файл. Обратите внимание, что имя элемента управления вводом в представлении совпадает с именем объекта HttpPostedFilesBase (в нашем случае это файл).

После запуска этого приложения вы увидите следующую форму:

Когда пользователь выбирает файл и нажимает кнопку « Загрузить изображение» , будет показана следующая форма с сообщением (если загруженный файл успешно сохранен):

Помните о безопасности!

Примечание. Это простое приложение позволяет передавать файлы пользователя на сервер, но не заботится о безопасности. Сервер может быть взломан вирусом или другими вредоносными данными, загруженными кем-либо. Таким образом, вы должны добавить некоторые ограничения на загрузку файлов в контроллер. Есть несколько проблем безопасности, которые позволяют вам решить, принимать ли загруженный файл или нет. Например, вы можете проверить контрольную сумму загруженного файла или контрольного типа файла, проверив расширение (но это может быть легко подделано).

Этот подход довольно хорош, если вы загружаете несколько небольших файлов один за другим, но он редко используется из-за следующих недостатков:

  • Загрузка большого количества файлов становится кошмаром - пользователь должен нажать кнопку « Выбрать файл» для каждого файла.
  • Загрузка больших файлов не удобна - страница зависает и не отображает процесс загрузки во время обработки файла.
  • После отправки формы все поля очищаются, поэтому, если форма не соответствует проверке, пользователь должен снова заполнить все поля.
  • Каждый браузер отображает форму по-своему:

Каждый браузер отображает форму по-своему:

Давайте посмотрим, как мы можем выйти за пределы недостатков этого элемента управления HTML.

Загрузка нескольких файлов

Приложение, которое мы обсуждали выше, может быть легко преобразовано для поддержки загрузки нескольких файлов: просто укажите столько входов файлов в представлении, сколько файлов вы хотите загрузить одновременно. Обратите внимание, что все входы должны иметь одинаковое имя. Это позволяет ASP.NET MVC принимать массив загруженных файлов и перебирать их в методе действия. Однако в случае, когда пользователю необходимо выбирать каждый файл отдельно, это неудобно, особенно при загрузке большого количества файлов.

К счастью, существует множество сторонних утилит, поддерживающих сценарий мультизагрузки и избегающих недостатков рассматриваемого элемента управления HTML.

Любой современный браузер поддерживает HTML5 и / или Flash, популярные платформы, которые позволяют создавать расширенные загрузчики файлов. Таким образом, существует большое количество загрузчиков с открытым исходным кодом на основе HTML5 / Flash, доступных для большого сообщества разработчиков, например:

  • Uploadify - это плагин jQuery, который позволяет вам создать интерфейс загрузки, похожий на вложения Gmail.
  • Fine Uploader - это плагин JavaScript с множественным выбором файлов, индикатором выполнения, автоматической и ручной загрузкой, предварительным просмотром изображений и т. Д.
  • Plupload - это инструмент загрузки, основанный на нескольких расширениях браузера, который включает некоторые функции обработки изображений.

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

  • Предварительная обработка изображений перед загрузкой (изменение размера, создание миниатюр нескольких размеров, добавление водяных знаков, извлечение EXIF, предоставление пользователям возможности обрезать изображения и т. Д.).
  • Загружайте целые папки и сохраняйте структуру папок на сервере.
  • Загрузите сотни файлов.
  • Загружайте файлы размером в сотни МБ или даже несколько ГБ.
  • Автоматически восстанавливать прерванные загрузки.
  • Ускорить процесс загрузки.

Все эти сценарии идеально подходят для пакета загрузки Aurigma. Вы можете сделать это с помощью нескольких строк кода.

Получить 30-дневную пробную версию Upload Suite включает в себя загрузчики премиум-класса на основе различных технологий (HTML5, Flash, Java, ActiveX) для любых серверных технологий - ASP.NET и PHP, классические ASP и JSP, Ruby-on-rails и node.js.

Похожие

Самсунг Биксби отстой. Вот как это отключить.
Если вы используете Android, вы, вероятно, используете Google Assistant. Если вы пользователь Galaxy, вам может помешать собственный Bixby от Samsung, особенно с помощью кнопки Bixby на S8, S9 и Note 8. Но есть и хорошие новости: их легко отключить. Итак, почему это плохо? Дело в том, что с Биксби
Как использовать учетную запись электронной почты iCloud на устройствах Android
Один из моих друзей приобрел Samsung Galaxy Note Edge, и ему нужно переключиться с Apple на Android. Он немного расстроен, потому что не хочет покидать свой iCloud. На самом деле, есть несколько выходов. Теперь я хотел бы рассказать вам, как использовать учетную запись iCloud Mail на устройствах Android и перенести контакты iCloud на Android , Вот
Что такое внутренняя ошибка сервера 500 и как ее исправить?
Если вы пытаетесь посетить веб-сайт и видите сообщение «500 Internal Server Error», это означает, что с веб-сайтом что-то не так. Это не проблема с вашим браузером, вашим компьютером или вашим интернет-соединением. Это проблема с сайтом, который вы пытаетесь
Интегрируйте свою учетную запись Evernote с OnePageCRM
Сегодня организация играет ключевую роль в бизнесе: от записи заметок после мозгового штурма до планирования крупного проекта. Важно вести запись! Представляем нашу последнюю интеграцию с Evernote, чтобы помочь вам сделать именно это! Evernote является одним из самых популярных организационных инструментов на рынке. Используйте его для записи минут на собраниях, проектах, мозговых штурмах и списках дел. Это позволяет легко индексировать заметки, теги и группировки в блокнотах для удобного
Как подключить ноутбук к ноутбуку по локальной сети?
... файлов с ноутбука на ноутбук: для этой работы отлично подойдет бесплатная программа «HFS» (HTTP File Server), не требует установки. Как подключить ноутбук к ноутбуку через usb? Если данные варианты вам не подходят, для соединения ноутбуков между собой можно воспользоваться адаптером «Easy Transfer Cable», использующие «usb порты» ноутбуков. Стоимость данного кабеля невелика: за достойный проверенный вариант придется заплатить около 500 рублей (например,
7 инструментов, чтобы разблокировать те, которые трудно удалить файлы
... загрузка с IObit перенаправляет на FreeNew.net, где они заставляют вас скачать менеджер установки, чтобы получить программу. CNET ссылка для скачивания У вас нет менеджера установки, или вы можете просто использовать Ссылка для скачивания , Удаление результата avast5.ini: файл был успешно удален БЕЗ необходимости перезагрузки или использования принудительного
Что такое PCI-совместимость и как оставаться в безопасности
Если вы новый владелец бизнеса и только начали принимать к оплате кредитные карты, вы не хотите, чтобы вас застали врасплох правилами, регулирующими обработку конфиденциальных персональных данных. Последствиями ненадлежащих процедур могут быть штрафы, сборы и даже прекращение обработки вашей карты. Читайте дальше, чтобы узнать о правилах PCI и о том, что вам нужно сделать, чтобы соответствовать требованиям. Что такое PCI? PCI расшифровывается как индустрия платежных карт.
Удивительная КАРТА ВЕТРА показывает, как самые большие порывы Земли движутся вокруг планеты
Потрясающая анимированная карта с изображением ветровых потоков в реальном времени по всему миру была искусно создана программистом. На графике показаны глобальные погодные условия, с современными порывами ветра, нависающими над нашей планетой.
Гарантированные заказы стоп-лосс: преимущества, затраты и ограничения подушки безопасности
Гарантированные заказы стоп-лосс: преимущества, затраты и ограничения подушки безопасности С гарантированным ордером стоп-лосс трейдеры хеджируют позиции против рисков закрытия. Но сколько стоит страхование от разрывов цен и какие брокеры предлагают «подушку
Что такое WINLOGON.EXE в диспетчере задач
WINLOGON.EXE - это процесс, без которого невозможно запустить Windows и ее дальнейшее функционирование. Но иногда под его личиной кроется вирусная угроза. Давайте разберемся, в чем заключаются задачи WINLOGON.EXE и какая опасность может исходить от него. Данный процесс можно всегда увидеть, запустив «Диспетчер задач» во вкладке «Процессы».
Как подключить Android-смартфон или планшет к ПК
Как правило, люди привязь их ноутбуки на телефоны Android, используя подключение для передачи данных

Комментарии

Как восстановить файлы резервного копирования iCloud на Android?
Как восстановить файлы резервного копирования iCloud на Android? И если вы планируете перейти с Apple на Android, вас также может заинтересовать следующий отрывок, который посвящен как перенести данные со старого Apple на новый Android , Фактически, один из самых простых способов передачи данных с Apple на Android - это
Что такое счастливые яйца, как их использовать и где их достать?
Что такое счастливые яйца, как их использовать и где их достать? Счастливые яйца улучшат ваш XP в течение ограниченного времени. Вы можете собирать их, повышая уровень или покупая их в магазине. Лучший способ заработать XP и перейти на следующий уровень в игре - это развить своего покемона (используя конфеты покемонов), поэтому, если вы «накопите» несколько эволюций покемонов на время, когда у вас есть счастливое яйцо, вы увеличит ваш рост XP. Это означает, что вы можете даже пропустить
Как он атакует вредоносное ПО?
Как он атакует вредоносное ПО? Вирус Дублируется путем присоединения к другому объекту. Прикрепляет (заражает) файлы к программам, документам и низкоуровневым структурам дисков или файловых систем (например, загрузочных секторов или таблиц разделов). Они могут работать несколькими способами: вместе с зараженной программой или когда пользователи открывают, сохраняют или создают файлы. Если компьютер Windows заражен, вирус может изменить содержимое реестра, заменить системные
Как вы можете удалить это?
Как вы можете удалить это? С помощью этого руководства вы узнаете, как избавиться от этого навязчивого гостя, который без нашего ведома и воли окажется в компьютере. Узнайте, как быстро удалить интерфейс Akamai NetSession из Windows. Для чего нужен интерфейс Akamai NetSession?
Я в безопасности от атак FFS?
Я в безопасности от атак FFS? Запуск Rowhammer через DRAM с ECC сложнее, чем обычный DRAM. Тем не менее, существуют модули DRAM с многократным переключением битов на домен ECC, которые ECC не может исправить. На данный момент все еще неясно, могут ли эти DRAM надежно использоваться. Я использую провайдера публичного облака. Я в опасности? Сложно сказать. NCSC поддерживает связь с крупными облачными провайдерами
Но сколько стоит страхование от разрывов цен и какие брокеры предлагают «подушку безопасности» вообще?
Но сколько стоит страхование от разрывов цен и какие брокеры предлагают «подушку безопасности» вообще? И последнее, но не менее важное: какие подробные положения могут привести защиту к абсурду? Для чего нужны гарантированные стоп-лосс ордера? Активные трейдеры используют стоп-лосс ордера для ограничения потерь: Слабое место ордеров стоп-лосс проявляется в бурных рыночных ситуациях. На волатильных этапах, в частности в результате резких, внезапных
Как скачать видео с YouTube на iPhone?
Как скачать видео с YouTube на iPhone? Возможно, многие пользователи iPhone имеют проблемы с загрузкой видео с YouTube на iPhone. Существует множество программных инструментов и сервисов веб-сайтов, которые помогают пользователям ПК / Mac загружать и сохранять видео с YouTube, теперь нам нужно только одно или несколько удобных для пользователя приложений iPhone YouTube Downloader. Зачем? Иногда нам нужно сохранять эти любимые видео на iPhone, такие как последние iPhone 7/6 для последующего просмотра
Как защитить себя от BlueBorne?
Как защитить себя от BlueBorne? Фактически, единственное эффективное действие со стороны пользователя - отключение Bluetooth-соединения на устройстве. К счастью, поставщики уязвимых операционных систем уже были проинформированы о существовании уязвимостей и работают над их исправлением. Когда дело доходит до пользователей Windows, они должны быть в безопасности, если они только установили июльские обновления системы. Соответствующие исправления были также введены в Android, хотя здесь могут потребоваться
Момент завершения приносит смесь огромного удовлетворения… и смущенной, испуганной реальности: «Как же я собираюсь опубликовать это?
Момент завершения приносит смесь огромного удовлетворения… и смущенной, испуганной реальности: «Как же я собираюсь опубликовать это?» Прочитайте больше , Микросекундный взгляд на обложку может быть единственной возможностью убедить потенциального читателя узнать больше. Более того, нет никаких споров с тем, что книги оцениваются по их обложкам. Временная обложка предлагает некачественный контент, даже если этот
Как подключить ноутбук к ноутбуку через сетевой кабель?
Как подключить ноутбук к ноутбуку через сетевой кабель? Второй способ включает в себя незначительные расходы на покупку «LAN кабеля», обжатого кроссоверным способом (обратным), а процесс настройки локальной сети между ноутбуками значительно проще вышеописанного. Но скорости подключения придется заплатить мобильностью локальной сети. А настройки действительно займут не более пары минут: - соедините ноутбуки между собой «LAN кабель»; - в «Центре управления
Немного утомительно, но что не сделано для безопасности?
Немного утомительно, но что не сделано для безопасности? Последний интересный вариант - это сообщения с определенным

Итак, почему это плохо?
Как подключить ноутбук к ноутбуку через usb?
Что такое PCI?
Как восстановить файлы резервного копирования iCloud на Android?
Что такое счастливые яйца, как их использовать и где их достать?
Как он атакует вредоносное ПО?
Как вы можете удалить это?
Для чего нужен интерфейс Akamai NetSession?
Я в безопасности от атак FFS?
Я в безопасности от атак FFS?