Почему то не скачивает файл с помощью библиотеки 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();
}
2
94
Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Последние комментарии
- AK1 апреля 2025 г. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP9 марта 2025 г. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМ22 ноября 2024 г. 21:51Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Сейчас обсуждают на форуме
- МА1 апреля 2025 г. 16:210ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- f15 февраля 2025 г. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день!