Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
Georgii204
0 / 0 / 0
Регистрация: 25.07.2016
Сообщений: 77
#1

Как загружать несколько файлов сразу через QNetworkReply и QNetworkAccessManager - C++ Qt

17.07.2017, 14:08. Просмотров 119. Ответов 1
Метки нет (Все метки)

Доброго времени суток. задача такая, нужно мне скачать сразу несколько файлов как я это делаю:
C++ (Qt)
1
2
3
    QNetworkAccessManager* pmanager = new QNetworkAccessManager(this);
    pmanager->get(QNetworkRequest(url));
    connect(pmanager,SIGNAL(finished(QNetworkReply*)),this,SLOT(FinishDownload(QNetworkReply*)));
FinishDownload:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
    void Download_window::FinishDownload(QNetworkReply *replay){
    QString way = wayfile;
    if(replay->error() == QNetworkReply::NoError){
        QByteArray data = replay->readAll();
        QFile file(way);
        if(file.open(QIODevice::WriteOnly)){
            file.write(data);
            replay->deleteLater();
            file.close();
        }
    }
}
Когда я добавляю в загрузку к примеру 2 файла то по окончанию загрузки сохраняется только последний файл, то есть второй. Что делать? подскажите новичку.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2017, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как загружать несколько файлов сразу через QNetworkReply и QNetworkAccessManager (C++ Qt):

Закачать разом несколько файлов через QNetworkAccessManager - C++ Qt
Через QNetworkAccessManager::post() можно отправлять на HTTP-сервер файлы по одному. А можно ли как-нибудь отправлять сразу несколько...

QNetworkAccessManager и QNetworkReply - GET\POST - C++ Qt
Здравствуйте. Хотел бы очень многое узнать подробно о классах QNetworkAccessManager и QNetworkReply. Как обязательный фактор - реализацию...

QNetworkAccessManager finished() не удаляется предыдущей QNetworkReply - C++ Qt
Отправляю в цикле post запросы к серверу. Сигнал finished(), связываю с слотом в котором обрабатываю результат запроса, в конце вызываю...

Не работает QNetworkReply error() QNetworkReply::NoError - C++ Qt
Подскажите, почему QNetworkReply не генерирует сигнал error() в случае успеха, в документации вижу есть ошибка QNetworkReply::NoError, что...

При загрузке файла через QNetworkReply добавляется моного QWidget - C++ Qt
Доброго времени суток. Задача такая, имеется QListWidget и QNetworkReply. Когда начинается скачивание через QNetworkReply то я подключаю...

Загрузка файлов с QNetworkAccessManager на Android 6.0 - C++ Qt
filedownloader.h #ifndef FILEDOWNLOADER_H #define FILEDOWNLOADER_H #include <QObject> #include <QByteArray> #include...

1
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,806
Записей в блоге: 17
17.07.2017, 17:07 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Приблизительно так:


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
QNetworkAccessManager* pmanager = new QNetworkAccessManager(this);
QStringList urls;
// urls << "http://url1/file1.jpg" <<  "http://url2/file2.jpg";
 
QStringList fileNames;
// fileNames << "file1.jpg" <<  "file2.jpg";
 
for (int i=0; i<2; ++i)
{
    QNetworkRequest request(urls[i]);
    QNetworkReply* reply=  manager->get(request);
    reply->setProperty("fileName", fileNames[i]); // use dynamic-properties
 
    connect( reply, SIGNAL(finished()),
             this, SLOT(replyFinished()) );
 
}


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void DownloadWindow::replyFinished(QNetworkReply *replay)
{
    if(replay->error() == QNetworkReply::NoError)
    {
        QByteArray data = replay->readAll();
        QString fileName = replay->property("fileName");
        QFile file(fileName);
        if(file.open(QIODevice::WriteOnly))
        {
            file.write(data);
        }
    }
    replay->deleteLater();
}
http://doc.qt.io/qt-5.9/properties.html#dynamic-properties
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2017, 17:07
Привет! Вот еще темы с ответами:

Запрос урла через QNetworkAccessManager - C++ Qt
Доброго времени суток. Сабж реализую так: Однако в репле пусто, почему? :( Спасибо

Как наследовать от QNetworkReply? - C++ Qt
Доброго времени суток. Проблема такая, нужно мне создать класс наследованный от QNetworkReply как я это делаю: NetworkReply.h class...

QNetworkReply. Как считать ответ http сервера без слотов/сигналов? - C++ Qt
Мне конкретно здесь не нравится, что при использовании сигналов/слотов приходится работать с несколькими потоками. Приведённый ниже код у...

Как открыть сразу несколько текстовых файлов через "append from"? - FoxPro
суть в чем: мне необходимо сформировать из 2-х файлов txt сделать 1 курсор (дбф)! вот примерно код: create cursor dbf (pole c(10),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru