c# - обрабатывать пустые пробелы в имени файла, указывая путь к файлу в качестве ссылки - PullRequest
0 голосов
/ 09 июля 2020
• 1000 вызывает проблему.

Путь выглядит как \\Users\shared\Training\Database\Oracle\Docs\Oracle Database Admin.docx, и я попытался заменить пустое пространство на% 20, но он все равно не работает .. В ссылке электронной почты путь обрезан до \\Users\shared\Training\Database\Oracle\Docs\Oracle

Public string GetMediaPath(int itemCode)
{
 string path = _dbContext.TraningMedias.Where( s => s.ItemCode == itemCode).Select(a => a.Path).FirstOrDefault().ToString();
 path.replace(" ", "%20");
 return path;
}

Не понимаю, почему в этом случае не работает функция замены.

Ответы [ 6 ]

1 голос
/ 09 июля 2020

Строки неизменяемые , а Replace возвращает строку, поэтому попробуйте следующее:

path = path.Replace(" ", "%20");
0 голосов
/ 09 июля 2020

Чтобы сохранить пробелы в тексте ссылки, используйте открывающий и закрывающий шеврон

Public string GetMediaPath(int itemCode)
{
 string path = "<"+ _dbContext.TraningMedias.Where( s => s.ItemCode == itemCode).Select(a => a.Path).FirstOrDefault().ToString() + ">";

 return path;
}
0 голосов
/ 09 июля 2020

Посмотрите это

В вашем случае:

path = Uri.EscapeUriString(path);
0 голосов
/ 09 июля 2020

Просто преобразуйте необработанную строку пути к файлу в правильный URI, например:

string fileUrl = new System.Uri("c:\\foo\\my document.docx").AbsoluteUri

, что даст вам эту строку: "file: /// c: / foo / my% 20document .docx "

0 голосов
/ 09 июля 2020

Вы можете попробовать закодировать URL и избавиться от пробелов и других специальных символов.

path= HttpUtility.UrlDecode(path);
0 голосов
/ 09 июля 2020

Попробуйте сделать это:

Приведенный ниже код удалит все недопустимые символы имени файла из пути.

 path =string.Concat(path.Split(Path.GetInvalidFileNameChars()));

Не забудьте включить пространство имен System.IO.

Спасибо

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