1. если по ссылке идет загрузка файла - как определить имя и расширение этого файла?
Если ссылка прямая, типа "
http://myserver/filename.zip", то из этого URL'a извлекаешь имя файла используя методы QUrl класса.
Если ссылка относительная, типа "
http://myserver/get?fileId=1234", то развитий событий может быть несколько:
- сервер начнет передавать данные сразу. Если при этом браузер получает заголовок с типом данных, например "Content-Type: application/zip", то он автоматически предложит его сохранить как файл, но имя файла будет "get?fileId=1234"
- сервер передает хедер "Content-Disposition". Тогда браузер возьмет имя файла из этого хедера.
- сервер передает заголовок "Content-Type: text/html", а вместо html передает двоичные данные. Браузер попытается их отобразить на странице.
- сервер делает редирект с "
http://myserver/get?fileId=1234" на "
http://myserver/1234/filename.zip". Имя файла берется из URL редиректа
Как же тогда сначало забрать заголовок для анализа? Может и не стоит вообще качать файл
QNetworkAccessManager::head(). Один и тот же URL передаешь 2 раза - сначала в метод head() и после сигнала finished() уже в метод get(), если содержимое заголовков удовлетворяет твоим условиям.