Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Java download file

Добрый день.
Как можно скачать файл по url, получив его параметры в виде имени и расширения?
Все найденные примеры совершают потоковую запись в уже созданный файл с указанным именем и расширением.
Спасибо


Ответ

На самом деле, понятие расширения пришло из Windows. В Linux название файлов включает и то, что находится после точки тоже. Получить названия файла можно, если сервер его включил в Content-Disposition. Ну, по крайней мере, стандарт HTTP говорит, что эта информация находится именно там. Content-Disposition можно взять так:
String uri = "http://www.website.com/download/file.pdf"; URL url = new URL(uri); URLConnection conn = url.openConnection(); Map header =conn.getHeaderFields(); header.get("Content-Disposition")
Проблема в том, что не все это делают. Например Google Drive на команду download в Content-Disposition возвращает json.txt, в котором есть инструкции по файлу. Выглядит это примерно так:
disposition: "SCAN_CLEAN" downloadUrl: "https://doc-10-bc-docs.googleusercontent.com/docs/securesc/xxxxxxxxxxxx/xxxxxxxxxxxx/xxxxxxxxxxxx/xxxxxxxxxxxx/xxxxxxxxxxxx/xxxxxxxxxxxx?e=download" fileName: "Oxford_dictionary.zip" scanResult: "OK" sizeBytes: 431943
Есть в header ещё Content-Type. Из него можно выудить отдельно расширение (точнее медиа-тип) файла. Брать нужно как-то так:
String uri = "http://www.website.com/download/file.pdf"; URL url = new URL(uri); URLConnection conn = url.openConnection(); String type = conn.getContentType();
Возвращает он строку типа:
application/pdf
Но чего-то стандартного, насколько я знаю, нет.

Комментариев нет:

Отправить комментарий