Выберите папку в приложении ASP.NET MVC для загрузки файлов - PullRequest
0 голосов
/ 26 февраля 2019

Если я хочу загрузить файл, это просто:

Бритва

@Html.TextBoxFor(m => m.File, new { type = "file" })

или

HTML

<input type="file">

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

Что-то вроде:

Razor

@Html.TextBoxFor(m => m.Folder, new { type = "folder" })

Отображение «диалога выбора папки».

1 Ответ

0 голосов
/ 26 февраля 2019

Вы не можете сделать это при использовании @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();  
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...