Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Получение имени файла из URL |
Автор: suxxor 26.12.2011, 00:12 | ||
Как корректно получить имя файла из URL? 1) из самой ссылки (если она имеет вид к примеру http://www.host.com/path/filename.ext или /path/filename.ext?param1=1¶m2=2 ) 2) можно извлечь его из параметра Content-Disposition заголовка, но он не всегда присутствует 3) из заголовка Location повторяем вариант №1 Нужно извлечь все описаные параметры с использованием regex (я использую TR1) К первому варианту я примернго написал регулярку:
к остальным нужна помощь |
Автор: bsa 26.12.2011, 11:51 |
а варианты типа http://forum.vingrad.ru/forum/s/d8986f426ce327862eaa1cda9ba06c0a/forum/topic-189260/kw-%25D0%25BF%25D1%2580%25D0%25B5%25D0%25BE%25D0%25B1%25D1%2580%25D0%25B0%25D0%25B7%25D0%25BE%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BF%25D1%2580%25D0%25B8%25D0%25B2%25D0%25B5%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BA%25D0%25BE%25D0%25BD%25D0%25B2%25D0%25B5%25D1%2580%25D1%2582%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F-%25D1%2581%25D1%2582%25D1%2580%25D0%25BE%25D0%25BA%25D0%25B8.html ты учел? |
Автор: suxxor 26.12.2011, 14:55 |
bsa, а это к чему? |
Автор: bsa 26.12.2011, 19:46 |
это я к тому, что твое регулярное выражение не умеет работать с юникодом и спец символами. |
Автор: suxxor 26.12.2011, 21:02 |
bsa, как ты определил на глаз "...не умеет работать с юникодом..."? |
Автор: bsa 27.12.2011, 10:17 |
натрави твой регэксп на ссылку, что я дал. в результате должен получиться файл с русскими буквами и расширением html. а на самом деле что выйдет? А на глаз очень просто: я не слышал чтобы regexp умел делать преобразование строк вида "%20%65%21" в " A!". По причине того, что формат url стандартен (не важно, для локального файла или удаленного), необходимо делать такое преобразование. В противном случае, ты лишишься возможность работать с именами файлов, содержащих пробелы и ряд других символов. |
Автор: suxxor 27.12.2011, 14:22 |
bsa, ну для этого можно использовать функцию http://msdn.microsoft.com/en-us/library/windows/desktop/aa384342%28v=vs.85%29.aspx |