как мне узнать какое расширение у файла
Сервер отдаёт имя файла в заголовке
Content-Disposition в полях
filename
и/или в
filename*
.
И тут есть два способа сохранить файл с этим именем и/или расширением из этого имени:
1) включить в curl CURLOPT_HEADER и вытащить заголовок вместе с содержимым за один запрос. Ссылку на то
как это сделать уже дал
SagePtr.
2) отправить сначала
HEAD
-запрос, в котором посмотреть заголовок ответа, а затем вторым запросом скачать файл.
В обоих случаях надо парсить заголовок ответа
Content-Disposition