(Предисловие: этот вопрос касается ASP.NET MVC 3.0, выпущенного в 2011 году , а не ASP.NET Core 3.0, выпущенного в 2019 году)
Я хочу загрузить файл в asp.net mvc. Как я могу загрузить файл, используя HTML- input file
контроль?
c#
asp.net-mvc
asp.net-mvc-3
user637197
источник
источник
Ответы:
Вы не используете элемент управления вводом файлов. Элементы управления на стороне сервера не используются в ASP.NET MVC. Оформите следующий пост в блоге которой показано, как этого добиться в ASP.NET MVC.
Итак, вы начнете с создания HTML-формы, которая будет содержать ввод файла:
и тогда у вас будет контроллер для обработки загрузки:
источник
<httpRuntime maxRequestLength="x" />
в своем файле web.config, где x - это количество КБ, разрешенных для загрузки.Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })
. Это полезно, если это частичное представление, которое вызывается из нескольких родительских представлений (или аналогичных).передать
byte[]
(например, для сохранения в БД):Чтобы передать поток ввода непосредственно в базу данных, не сохраняя его в памяти, вы можете использовать этот класс, взятый отсюда и немного измененный:
и использование:
источник
using (MemoryStream ms = new MemoryStream()) { /* ... */ }
File.ReadAllBytes
Альтернативный способ передачи в byte [] (для сохранения в БД).
Метод Артура работает довольно хорошо, но не копирует идеально, поэтому документы MS Office могут не открываться после извлечения их из базы данных. MemoryStream.GetBuffer () может возвращать дополнительные пустые байты в конце байта [], но вы можете исправить это с помощью MemoryStream.ToArray (). Тем не менее, я нашел, что эта альтернатива отлично работает для всех типов файлов:
Вот мой полный код:
Класс документа:
Загрузка файла:
Файл загружен:
Просмотр (фрагмент):
источник
Часто вы также хотите передать модель представления, а не единственный файл. В приведенном ниже коде вы найдете некоторые другие полезные функции:
Это можно сделать с помощью следующего кода:
Убедитесь, что у вас есть
по вашему мнению, для ошибок проверки.
Также имейте в виду, что максимальная длина запроса по умолчанию составляет 4 МБ (maxRequestLength = 4096), чтобы загрузить файлы большего размера, вам необходимо изменить этот параметр в web.config:
(40960 = 40 МБ здесь).
Тайм-аут выполнения - общее количество секунд. Вы можете изменить его, чтобы разрешить загрузку огромных файлов.
источник
По мнению:
пока следующий код в контроллере:
источник
Я должен загрузить файл в кусочках файла размером 100 КБ и сохранить файл в базе данных с помощью команды. Я надеюсь, это поможет вам.
Javascript (нокаут Js)
HTML-код:
источник
Как я это делаю, почти так же, как выше, я покажу вам мой код и как использовать его с БД MYSSQL ...
Таблица документов в БД -
int Id (PK), строка Url, строка Description, CreatedBy, TenancyId DateUploaded
Приведенный выше идентификатор кода, представляющий собой первичный ключ, URL-адрес - имя файла (с типом файла в конце), описание файла для вывода в представлении документов, CreatedBy, который загрузил файл, tenancyId, dateUploaded.
внутри представления вы должны определить энктип, иначе он не будет работать правильно.
Приведенный выше код даст вам кнопку обзора, а затем внутри моего проекта у меня есть класс, который называется IsValidImage, который просто проверяет, соответствует ли размер файла указанному вами максимальному размеру, проверяет, является ли он файлом IMG, и все это в функции bool класса. Так что если true возвращает true.
Итак, в контроллере:
источник
источник
Предоставление полного решения
Сначала используйте вход в. CShtml в MVC View
Теперь позвоните в Аякс позвоните
Контроллер Json Call
источник
Я даю вам простой и легкий метод для понимания и изучения.
Сначала вы должны написать следующий код в вашем файле .Cshtml .
Затем в вашем контроллере введите следующий код:
Для этого вы должны сделать слой BAL и DAL согласно вашей базе данных.
источник
Вот мой рабочий пример:
источник
пожалуйста, обратите внимание на этот код только для загрузки изображения . Я использую HTMLHelper для загрузки изображения. в файле cshtml поместите этот код
затем создайте тег HTMLHelper для загрузки
и, наконец, в действии Загрузить свой файл
источник
источник
загрузка файла с использованием formdata
файл .cshtml
Серверный код
источник
Простой способ сохранить несколько файлов
cshtml
контроллер
источник
Поскольку я обнаружил проблему с загрузкой файла в браузере IE, я бы посоветовал обработать его следующим образом.
Посмотреть
контроллер
источник
Html:
Код позади:
источник
Оформить заказ
добавить эти функции в свой,
base controller
чтобы вы могли использовать их вall controllers
проверить, как его использовать
и вот полный пример
источник
В контроллере
Ввиду
В модальном классе
Создать папку для загрузки в папке Content в проекте
источник
Большинство ответов кажется вполне законным, хотя я сделал для вас пример проекта на donnetfiddle
Я использую LumenWorks.Framework для работы CSV, но это не обязательно.
демонстрация
Посмотреть
контроллер:
источник
Я столкнулся с этой же ошибкой, когда я делаю концепцию загрузки файлов. Я знаю много ответов, предоставленных разработчиками на этот вопрос.
Несмотря на то, что я отвечаю на этот вопрос, я получил эту ошибку из-за упомянутой ниже невнимательной ошибки.
При задании атрибута name убедитесь, что ваш параметр контроллера также имеет то же значение имени «uploadedFile». Нравится :
иначе это не будет отображено.
источник