Russian Qt Forum
Май 17, 2024, 23:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не скачивает в нужную директорию  (Прочитано 2929 раз)
yandzee
Гость
« : Сентябрь 29, 2011, 22:17 »

В одной из предыдущих моих тем, товарищ поделился со мной классом для закачки файлов. .h и .cpp приложил.
Собственно при реализации одной программы, мне нужно было сменить директорию и скачать туда файлы, папку создавал, переходил туда, выводил даже путь для проверки qDebug ом, но файл скачивается в папку, где лежит exeшник.

Вот тестовая программка

Код:
#include <QtGui>
#include "httpclient.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDir dir;
    dir.mkdir("test_folder");
    dir.cd("test_folder");
    QHttpClient *pclient = new QHttpClient;
        qDebug() << dir.path();
    pclient->getFile("google.ru", "test.html");

    return a.exec();
}
Как быть? Что можно попробовать?
Записан
Rem Norton
Гость
« Ответ #1 : Сентябрь 29, 2011, 22:34 »

в файле "httpclient.cpp" в функции "bool QHttpClient::getFile(QString cURL, QString cFileName, int Timeout)"
заменить:
Код
C++ (Qt)
QDir dir(QCoreApplication::applicationDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
 

на:
Код
C++ (Qt)
QString cFilePath = cFileName;
 

или на:
Код
C++ (Qt)
QDir dir(QDir::currentDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
 

либо так:
Код
C++ (Qt)
#include <QtGui>
#include "httpclient.h"
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QDir dir;
   dir.mkdir("test_folder");
   QHttpClient *pclient = new QHttpClient;
       qDebug() << dir.path();
   pclient->getFile("google.ru", "./test_folder/test.html");
 
   return a.exec();
}
 
« Последнее редактирование: Сентябрь 29, 2011, 22:38 от Rem Norton » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Сентябрь 29, 2011, 22:37 »

QDir::cd() не меняет текущий каталог. Это делает QDir::setCurrent(), о чём написано в документации.
Записан
Rem Norton
Гость
« Ответ #3 : Сентябрь 29, 2011, 22:41 »

QDir::cd() не меняет текущий каталог. Это делает QDir::setCurrent(), о чём написано в документации.
Дело не только в этом: функция bool QHttpClient::getFile(QString cURL, QString cFileName, int Timeout) заточена так, что принимает cFileName, как путь  относительно exe-шника. Тут либо юзать как есть, принимая во внимание сей факт, либо немного подрихтовать класс под свои нужды.
Записан
yandzee
Гость
« Ответ #4 : Сентябрь 30, 2011, 12:06 »

Цитировать
QDir dir(QCoreApplication::applicationDirPath());
QString cFilePath = dir.absoluteFilePath(cFileName);
Я их итак убрал. Я перехожу в другую директорию cd, но закачка происходит именно по пути exe шника.
Дома попробую setCurrent()...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.399 секунд. Запросов: 22.