c # недопустимый символ в пути к файлу

1

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

Вот код

appData = string.Format("{0}{1}\"", controller.Server.MapPath("~/App_Data/"), Guid.NewGuid().ToString());

if (!Directory.Exists(appData))
    Directory.CreateDirectory(appData);

filePath = string.Format("{0}\"{1}", appData, model.File.FileName);
model.File.SaveAs(filePath);
data.Add("attachment", filePath);

Но когда он переходит к функции SaveAs, она заявляет

Illegal character in path

AppDath = C:\Users\Ben\Documents\Team Foundation Server\Team Projects\Shared\Orchard 1.6\Orchard\src\Orchard.Web\App_Data\392216b5-32ad-41f4-82bf-e074b13f25df\"

Любая идея почему?

Теги:
model-view-controller
asp.net-mvc
path

2 ответа

4
Лучший ответ

используйте Path.Combine

filePath = Path.Combine(appData, model.File.FileName);

для создания пути appData

appData = Path.Combine(controller.Server.MapPath("~/App_Data"), Guid.NewGuid().ToString());
  • 0
    Я исправил свою переменную appData следующим образом: "appData = string.Format (" {0} {1} ", controller.Server.MapPath (" ~ / App_Data / "), Guid.NewGuid (). ToString ());" и тогда мой filePath сработал :)
  • 2
    @Canvas Лучше всего просто не использовать String.Format для объединения путей ... когда у вас есть выделенный метод;)
1

использование

filePath = string.Format(@"{0}\"{1}", appData, model.File.FileName);

@ Char показывает компилятору, что строка не имеет каких-либо обратных символов. Нормальный, вы используете префикс \ в некоторых специальных символах, например \n означает новую строку. У вас строка имеет \, поэтому компилятор пытается разрешить ее со следующим символом в строке.

Другой способ - избежать обратной косой черты со второй, например:

filePath = string.Format(@"{0}\\"{1}", appData, model.File.FileName);
  • 0
    Он ломается при попытке создать местоположение appData

Ещё вопросы

Сообщество Overcoder
Наверх
Меню