nyt1972 Ответов: 1

Динамическое создание папки в ASP.NET MVC5


Привет,

Как создать папку на любом диске динамически, а затем загрузить файлы в любую выбранную папку.

Я попробовал код, но он создается в папке приложения.

Что я уже пробовал:

Контроллер:
[HttpPost]
       public ActionResult CreateFolder(string folderName)
       {
           string folder = Server.MapPath(string.Format("~/{0}/", folderName));
           if(!Directory.Exists(folder))
           {
               Directory.CreateDirectory(folder);
               ViewBag.Message = "Folder " + folderName.ToString() + " created successfully!";
           }
           else
           {
               ViewBag.Message = "Folder " + folderName.ToString() + "  already exists!";
           }
           return View();
       }


Смотреть:
@using (Html.BeginForm("CreateFolder", "Home", FormMethod.Post))
{
    <label for="file">Folder Name:</label>
    <input type="text" name="folderName" />

    <input type="submit" />
   
}
<hr />
@ViewBag.Message

DerekT-P

Вы говорите "на любом диске", но вы используете сервер.MapPath, чтобы получить путь относительно вашего веб-приложения. Если вы хотите, чтобы папка находилась в определенном, абсолютном месте - тогда положите ее туда. (Например, Foldername = "d:\mytopfolder\mysubfolder";справочник.CreateDirectory(Имя Папки); )

Sandeep Mewara

Не вижу, где вы берете ввод для пути к папке здесь. Ваш код заключается в создании папки в папке приложения (относительно вашего сервера, использующего приложение.MapPath).

Возьмите путь от пользователя, а затем используйте этот абсолютный путь для создания каталога и использования.

1 Ответов

Рейтинг:
6

Sandeep Mewara

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

Это оставило бы вас с возможностью определенного вами местоположения на сервере, где вы хотите создать папку. Теперь эта папка может быть специфичной для пользователя.
Грубо говоря, это переводится как:
1. Выберите/определите путь на сервере, где будут созданы все папки. Используйте этот абсолютный путь или относительный путь к вашему приложению.
2. Создать папку в зависимости от пользователя (логина или ID пользователя)
3. загрузите данные для этого пользователя в его папку.

А теперь предположим:
1. Вы указали на веб-сайт приложения (http://www.example.com/) к C:\Inetpub\wwwroot
2. Установите свой testuser приложение (webapp как виртуальный каталог в IIS, помеченный как приложение) в: L:\MyWebApps\testuser
3. Вы решаете загрузить все файлы в нужное место: L:\MyWebApps\testuser\alluseruploads

Тогда код выглядит так:

string uploadRoot = Server.MapPath("/testuser/alluseruploads");  //returns L:\MyWebApps\testuser\alluseruploads
string folder = string.Format(uploadRoot +"/{0}/", folderName);
           if(!Directory.Exists(folder))
           {
               Directory.CreateDirectory(folder);
               ViewBag.Message = "Folder " + folderName.ToString() + " created successfully!";
           }