Подтвердить что ты не робот

Asp.net FileUpload.FileName возвращает полный путь, т.е. когда не требуется

Из того, что я понимаю для asp.net FileUpload.FileName, ruturns полный путь, в то время как в firefox он возвращает только имя файла. Как удалить путь из возвращаемой строки, поскольку мне просто нужно имя файла, закодированного в html.

4b9b3361

Ответ 1

Вы можете использовать статический класс Path, чтобы получить имя файла.

var fileName = Path.GetFileName(somePath);

И HttpUtility статический класс для его кодирования.

var encoded = HttpUtility.HtmlEncode(fileName);

Ответ 2

Итак, есть параметр IE (не только в IE8, но и в новых версиях) в меню "Сервис" → "Свойства обозревателя" → "Безопасность", который позволяет включать или исключать локальный путь при загрузке файлов.

IE8 Local Directory Path Setting

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

Как упоминалось Джошем, Path.GetFileName(...) - хороший вариант. Вы также можете использовать string.Split в сочетании с Linq.

string fileNameOnly = somePath.Split('\\').Last();

Ответ 3

Path.GetFileName(Request.Files["file"].FileName)