Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
f
31 мая 2018 г. 11:57

Почему то не скачивает файл с помощью библиотеки QNetworkAccessManager

qt, QNetworkAccessManager, FTP

pesokWidget.pro

QT       += core gui network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = pesokWidget
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp \
        widget.cpp
HEADERS += \
        widget.h \

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    w.resize(300, 50);
    a.exec();
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QLineEdit>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT
    QLineEdit *edit;
    QPushButton *btn;
    QNetworkAccessManager *manager;
public:
    Widget(QWidget *parent = 0);
    ~Widget();

public slots:
    void onBtn();
    void replyFinished();
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include <QVBoxLayout>
#include <QApplication>
#include <QNetworkReply>
#include <QFile>

QStringList needToDounload = {
    "ftp://cddis.gsfc.nasa.gov/pub/slr/data/npt_crd/gracea/2010/gracea_20100108.npt.Z",
    "ftp://cddis.gsfc.nasa.gov/pub/slr/data/npt_crd/gracea/2010/gracea_20100101.npt.Z"
};

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVBoxLayout *mainL = new QVBoxLayout(this);
    edit = new QLineEdit();
    mainL->addWidget(edit);
    btn = new QPushButton("Dounload");
    mainL->addWidget(btn);
    connect(btn, &QPushButton::clicked, this, &Widget::onBtn);
    manager = new QNetworkAccessManager(this);
}

void Widget::onBtn()
{
    // берем адрес введенный в текстовое поле
    QUrl url(edit->text());
    // создаем объект для запроса
    QNetworkRequest request(url);
    // Выполняем запрос, получаем указатель на объект
    // ответственный за ответ
    QNetworkReply* reply=  manager->get(request);
    // Подписываемся на сигнал о готовности загрузки
    connect(reply, &QNetworkReply::finished, this, &Widget::replyFinished);
}

void Widget::replyFinished()
{
    static int count = 0;
    QNetworkReply *reply=
            qobject_cast<QNetworkReply *>(sender());
    if (reply->error() == QNetworkReply::NoError)
    {
        // Получаем содержимое ответа
        QByteArray content= reply->readAll();
        QStringList l = QApplication::arguments().at(0).split("\\");
        l.removeLast();
        QString fullName = l.join("\\") + QString("\\dounloadFile%1.file").arg(count++);
        QFile file(fullName);
        if (!file.open(QIODevice::WriteOnly)) {
            qDebug() << QString("Could not open %1 for writing: %2")
                                  .arg(fullName).arg(file.errorString());
            return;
        }
        file.write(content);
        file.close();
    } else {
        // Выводим описание ошибки, если она возникает.
        qDebug() << reply->errorString();
    }
    // разрешаем объекту-ответа "удалится"
    reply->deleteLater();
}
Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
1

Добрый день!

По-моему, здесь всё до банального просто. Файлы недоступны. через браузер я не смог скачать их.

Вот в этой статье есть готовый Downloader , если вы пропустили статью ))
По FTP он работает, я проверил на работе скачивание по FTP. Но ваши файлы не может скачать. Они просто недоступны.
1

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
IT
25 марта 2019 г. 17:32
Ilya The Engineer

Qt - Тест 001. Сигналы и слоты

  • Результат:5баллов,
  • Очки рейтинга-10
G
25 марта 2019 г. 8:34
GAG

C++ - Тест 002. Константы

  • Результат:41баллов,
  • Очки рейтинга-8
G
25 марта 2019 г. 8:25
GAG

C++ - Тест 001. Первая программа и типы данных

  • Результат:66баллов,
  • Очки рейтинга-1
Последние комментарии
22 марта 2019 г. 12:32
Евгений Легоцкой

Ну может бибилотеки не те положили? У вас сборка для MinGW, а либы для MSVC.
ВН
22 марта 2019 г. 11:08
Волчонок Над-Пропастью

Из кьюта приложение не хочет запускаться, аварийно завершается, но каких-либо ошибок не выдаёт. Оно открывается, после нажатия "старт" зависает и завершается. Если не из кьюта запускать дебаг ...
21 марта 2019 г. 15:49
Евгений Легоцкой

серьезно? Эта ошибка 404 уже даже не относится к данному вопросу. В каких-то urls в вашем проекте. Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на...
АБ
21 марта 2019 г. 15:00
Артем Бел

а это где? сейчас ошибка в debag такая: Page not found (404)Request Method: GETRequest URL: http://amadowshop.site/accounts/profile/
21 марта 2019 г. 12:47
Евгений Легоцкой

не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях https://amadowshop.site/auth/verify/complete/facebook/
Сейчас обсуждают на форуме
U
25 марта 2019 г. 12:43
Unreal_man

Как сделать чтоб при клике на ячейку(ос андроид) ее сразу можно было редактировать?QGuiApplication::inputMethod()->show(); показывает клавиатуру, а вот что до этого прописать чтоб текст в ...
m
24 марта 2019 г. 10:36
monevich

Отвечу на свой же вопрос, может кому то это пригодится. Да, можно в функции main использовать такую конструкцию. При запуске программы из Qt передаю свой аргумент в параметрах командной строк...
22 марта 2019 г. 12:29
Дмитрий

Да, мьютекс добавил, но в том потоке, где сигнал вызывается.
ВН
22 марта 2019 г. 9:04
Волчонок Над-Пропастью

Да, на эту проблему! Зато у меня теперь новая, ругается на подключение QMediaPlayer, пишет, что не находит подобного файла или библиотеки. Пока не нашла как исправить, только вариант с переуст...
22 марта 2019 г. 8:58
Михаиллл

4) это , похоже, для создания видоизмененных страниц, для анимации. 3,5) добавить фвйл/qt/ui.qml
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы