Вы не можете сделать это при использовании @Html.TextBoxFor
.Может быть другой способ загрузки папки, но я не знаю об этом.
Однако вы можете изменить диалоговое окно загрузки файлов для загрузки нескольких файлов одновременно, что, по сути, одно и то же. Вот учебник, показывающий, как.
По сути, вам необходимо добавить следующий атрибут к входу загрузки файла:
@Html.TextBoxFor(m => m.File, new { type = "file", @multiple = "multiple" })
Вам также необходимо добавить multpart/form-data
атрибут вашего кода Razor для создания формы.Вот пример из этого урока:
@using (Html.BeginForm("UploadFiles", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
На данный момент вы можете выбрать несколько файлов для загрузки.Вы можете легко открыть папку, нажать CTRL + A, чтобы выбрать все, а затем нажать кнопку загрузки, чтобы загрузить всю папку сразу.
Обратите внимание, что вам нужно изменить действие контроллера для одновременного приема нескольких файлов..
РЕДАКТИРОВАТЬ: Вот пример того, как справиться с этим в вашем действии контроллера, из ранее упомянутого учебника.Обратите внимание, что ваш параметр - это массив HttpPostedFileBase
объектов, каждый из которых представляет загружаемый вами файл.Затем вы перебираете каждое из них и сохраняете его.
[HttpPost]
public ActionResult UploadFiles(HttpPostedFileBase[] files)
{
//Ensure model state is valid
if (ModelState.IsValid)
{ //iterating through multiple file collection
foreach (HttpPostedFileBase file in files)
{
//Checking file is available to save.
if (file != null)
{
var InputFileName = Path.GetFileName(file.FileName);
var ServerSavePath = Path.Combine(Server.MapPath("~/UploadedFiles/") + InputFileName);
//Save file to server folder
file.SaveAs(ServerSavePath);
}
}
}
return View();
}