Как извлечь имя/данные из базы данных и использовать его в качестве имени моей папки, которое создается динамически в asp.net С# с использованием server.MapPath()?

Я использовал AjaxFileUpload для загрузки нескольких файлов изображений. Теперь я хочу хранить загруженные изображения внутри корневой папки> подпапки.

Корневая папка находится в имени пользователя. Корневая папка создается динамически, используя сеанс пользователя, вошедшего в систему. Вот так:

string username = Session["username"].ToString();

Я могу создать эту папку и сохранять в ней изображения. но я хочу сохранить его в подпапке.

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

Я знаю, как создать новую папку с помощью Server.MapPath(); Вот код для него вкратце

using System.IO
if (Directory.Exists(Server.MapPath(uploadPath))) return;
else Directory.CreateDirectory(Server.MapPath(uploadPath));

где uploadPath — это имя папки, которую я хочу создать динамически.

но как мне включить подпапку в мой Server.MapPath(), чтобы сделать мой путь корневой папкой/подпапкой?

Небольшой пример, чтобы сделать вопрос понятным. Я продавец. Я разместил 4 объявления в Интернете. Теперь, когда я публикую свое 5-е объявление, я хочу включить много изображений. эти изображения должны быть сохранены в папке

Продавец/5/imagename.jpg. (где Seller — имя пользователя (главная папка), 5 — advertID в базе данных и имя подпапки)

Как мне это сделать? Пожалуйста помоги. Я использую asp.net С#


person user2106271    schedule 16.01.2014    source источник


Ответы (2)


Насколько я знаю, вы не можете сделать одну инструкцию для создания папки и подпапок, потому что вам нужно сначала создать папку.

У вас есть весь код, который вам нужен, вам просто нужно повторить его. Проверьте, существует ли основная папка (имя пользователя). Если он не создает его, если это так, проверьте, существует ли подпапка. Если нет, создайте его.

Просто проработайте эту логику, и все будет готово.

person Dave Mroz    schedule 16.01.2014
comment
Спасибо, Дэйв. Будет работать над этим. :-) Создание новой папки в порядке. Я хотел бы назвать новую созданную папку с данными (идентификационный номер) из базы данных. В любом случае я могу это сделать? Я работаю над этим впервые. поэтому застрял здесь. - person user2106271; 17.01.2014
comment
Конечно. Просто возьмите данные и преобразуйте их в строку и используйте ее в качестве имени папки. Есть несколько способов сделать это, и вы можете найти массу примеров в Google, но самым простым способом будет advertId.ToString() или String.Format("{0}", advertId). Сделайте первое, если вы просто конвертируете целое число, но сделайте второе, если вам нужно объединить строку с чем-либо еще (т. е. String.Format("AdvertId{0}",advertId) даст advertId5 в качестве имени выходной папки и избавит вас от головной боли (и накладных расходов) на выполнение объединения в несколько строк кода. - person Dave Mroz; 17.01.2014

User Path.Combine, чтобы добавить свой корень и идентификатор пользователя:

   var userPath = Path.Combine(uploadPath,userID) 

Это самый безопасный способ создать то, что вам нужно. Метод Directory.CreateDirectory создаст все подпапки по мере необходимости:

 var userPath = Path.Combine(uploadPath,userID) 
if (Directory.Exists(Server.MapPath(userPath))) return;
else Directory.CreateDirectory(Server.MapPath(userPath));
person Almond    schedule 02.04.2014