In this article I will explain with an example, how to create a Folder (Directory) inside wwwroot Folder in ASP.Net Core.
The path of the wwwroot folder is accessed using the IHostingEnvironment interface and then using the Directory class a Directory (Folder) is created inside the wwwroot folder in ASP.Net Core.
Note: For beginners in ASP.Net MVC Core, please refer my article ASP.Net MVC Core Hello World Tutorial with Sample Program example.
You will need to import the following namespaces.
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
The Action method Index by default supports the GET operation and hence another overridden method for POST operation is created which accepts the parameter which is a collection of type IFormFile.
Note: The name of the IFormFile parameter and the name of HTML FileUpload element must be exact same, otherwise the IFormFile parameter will be NULL.
First a check is performed whether Directory (Folder) exists if not then the Directory (Folder) is created inside the www Folder using IHostingEnvironment interface and then a loop is executed and one by one each file is saved to the Directory (Folder).
Note: For more details about IHostingEnvironment interface, please refer Using IHostingEnvironment in ASP.Net Core.
Finally, a message is displayed to the user using ViewBag.
Note: For more details on displaying message using ViewBag, please refer my article Display (Pass) String Message from Controller to View in ASP.Net MVC.
public class HomeController : Controller
    private IHostingEnvironment Environment;
    public HomeController(IHostingEnvironment _environment)
        Environment = _environment;
    public IActionResult Index()
        return View();
    public IActionResult Index(List<IFormFile> postedFiles)
        string wwwPath = this.Environment.WebRootPath;
        string contentPath = this.Environment.ContentRootPath;
        string path = Path.Combine(this.Environment.WebRootPath, "Uploads");
        if (!Directory.Exists(path))
        List<string> uploadedFiles = new List<string>();
        foreach (IFormFile postedFile in postedFiles)
            string fileName = Path.GetFileName(postedFile.FileName);
            using (FileStream stream = new FileStream(Path.Combine(path, fileName), FileMode.Create))
                ViewBag.Message += string.Format("<b>{0}</b> uploaded.<br />", fileName);
        return View();
The View consists of an HTML Form which has been created using the Razor Tag attributes with the following attributes.
asp-action – Name of the Action. In this case the name is Index.
asp-controller – Name of the Controller. In this case the name is Home.
method – It specifies the Form Method i.e. GET or POST. In this case it will be set to POST.
There is an HTML FileUpload element, a Submit Button and a SPAN element for displaying Message enclosed in a Form element.
The HTML Form has been specified with enctype=“multipart/form-data” attribute as it is necessary for File Upload operation and the FileUpload element has been specified with an additional HTML5 attribute multiple = “multiple” to allow user to select multiple files.
    Layout = null;
<!DOCTYPE html>
    <meta name="viewport" content="width=device-width" />
    <form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="Index">
        <span>Select File:</span>
        <input type="file" name="postedFiles" multiple />
        <input type="submit" value="Upload" />
        <span style="color:green">@Html.Raw(ViewBag.Message)</span>
Create a Folder (Directory) inside wwwroot Folder in ASP.Net Core