В ссылке передается тип файла, который необходимо подставить к названию файла при загрузке. Он всегда идет после file%2c, как его оптимально вытянуть? Может есть пример с помощью JSOUP?
https://site.com/download?resid=7257139334599!7571&authkey=!AKRZu44V2I1I&ithint=file%2cpdf
или
https://site.com/download?resid=76CC13Arr773BD!3049&ithint=file%2cdocx&app=Word&authkey=!AKrtQi2maRE
как по мне не очень удачный вариант:
private String getTypeFile(String typeFile) {
Pattern pt = Pattern.compile("(%2c)");
Matcher mt = pt.matcher(typeFile);
if (mt.find()) {
return typeFile.substring(mt.start() + 3, mt.start() + 6);
}
return null;
}
String str = "https://site.com/download?resid=7257139334599!7571&authkey=!AKRZu44V2I1I&ithint=file%2cpd42rerfds=13=32&?f";
Pattern pattern = Pattern.compile("file%2(.+)[a-z=?&.//_0-9]+");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
{ System.out.print(str.substring(matcher.start()+6,matcher.end()) + " "); }
System.out.println();
ищутся совпадения "file%2" и после подставляешь символы какие должны выводиться.
Самое тривиальное решение:
private String getFileExtension(String link) {
int p1 = link.indexOf("file%2c");
if (p1 == -1) {
throw new IllegalArgumentException("Incorrect link!");
}
p1 += 7; // "file%2c".length() == 7
int p2 = link.indexOf("&", p1);
return p2 == -1 ? link.substring(p1) : link.substring(p1, p2);
}
Если разработка ведется с использование Android SDK, то можно воспользоваться методом getQueryParameter(...) класса android.net.Uri.
Если действительно file. всегда присутствует:
String.split
typeFile.split("file%2c")[1].split("&")[0];
Иначе, можно добавить:
if (!typeFile.contains("file%2c")) return null;
Более правильным конечно будет парсить URI как URI.
Пример (опуская обработку ошибок):
MultiValueMap<String, String> parameters =
UriComponentsBuilder.fromUri(new URI(typeFile)).build().getQueryParams();
String fileName = parameters.get("ithint").get(0);
String ext = FilenameUtils.getExtension(fileName);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники