Сохранить файл в папке над файлами сайта - PullRequest
0 голосов
/ 02 июля 2011

Мой хост имеет следующую структуру:

/ Web -> Где находится содержимое сайта / Данные -> Разрешения для папок на чтение и запись

Как загрузить файл вПапка данных?Код ниже не работает, так как «~» возвращает каталог / web.

//Save Image
var serverPath = Server.MapPath(Href("~/Data/") + id);
Directory.CreateDirectory(serverPath);
imgOri.Save(Path.Combine(serverPath, fileName));

Ответы [ 2 ]

2 голосов
/ 02 июля 2011

Server.MapPath () предназначен для сопоставления пути до корневого каталога приложения.Поскольку вы пытаетесь загрузить файл выше корня, он не будет работать.

Вы можете загрузить файл выше корня, указав точный путь к файлу (если хост может его предоставить):

var serverPath = "C: \ YourFolder \ Data \") + id);

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

1 голос
/ 02 июля 2011

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

@{
    var root = Server.MapPath(".");
    var temp = root.Split('\\');
    temp[temp.Length - 1] = "Data";
    var newpath = string.Join("\\", temp);
}

Хостинговые компании, используемые для предоставления каталогов «данных» за пределамикорневая папка как безопасное место для таких вещей, как базы данных Access mdb.Вы не можете напрямую перейти к каталогу, который находится за пределами корня вашего сайта.ASP.NET покончил с необходимостью этих вещей, введя App_Data.Единственная причина, по которой вы хотите использовать этот тип папок в настоящее время, заключается в том, что вы хотите применить какую-либо аутентификацию перед обслуживанием содержимого каталога.Затем вам нужно использовать обработчик, иначе подойдет простой файл cshtml.Вы можете объединить помощник WebSecurity с помощником WebImage, чтобы сначала подтвердить подлинность пользователя, а затем получить и отобразить изображение, если они пройдут тест.src в вашем теге img будет указывать на файл cshtml со строкой запроса или значением UrlData, чтобы вы знали, какое изображение отображать.

Если вам не нужно проверять пользователей доотображение изображений, хранение файлов изображений вне корня добавляет ненужный уровень сложности.

...