源文件代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QFile>
#include <QDebug>
#include <QMessageBox>
#include <QProgressBar>
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_uploadButton_clicked();
void on_downloadButton_clicked();
void readContent();
void replyFinished(QNetworkReply*);
void loadError(QNetworkReply::NetworkError);
void loadProgress(qint64 bytesSent,qint64 bytesTotal);
private:
Ui::MainWindow *ui;
QNetworkReply *reply;
QProgressBar *progressBar;
QFile *file;
};
#endif
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_uploadButton_clicked()
{
file = new QFile("C:/Users/Administrator/Desktop/test.jpg");
file->open(QIODevice::ReadOnly);
QNetworkAccessManager *accessManager1 = new QNetworkAccessManager(this);
accessManager1->setNetworkAccessible(QNetworkAccessManager::Accessible);
QByteArray data;
QUrl url1("http://192.168.1.166:80/createFolder.php?foldername=upload");
QNetworkRequest request1(url1);
request1.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/octet-stream"));
accessManager1->post(request1, data);
QNetworkAccessManager *accessManager2 = new QNetworkAccessManager(this);
accessManager2->setNetworkAccessible(QNetworkAccessManager::Accessible);
QByteArray byte_file = file->readAll();
QUrl url2("http://192.168.1.166:80/upload.php?foldername=upload&filename="+ui->lineEdit->text()+".jpg");
QNetworkRequest request2(url2);
request2.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
reply = accessManager2->post(request2, byte_file);
progressBar = new QProgressBar();
progressBar->setValue(0);
progressBar->show();
connect(accessManager2,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(loadError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(uploadProgress(qint64 ,qint64)), this, SLOT(loadProgress(qint64 ,qint64)));
}
void MainWindow::on_downloadButton_clicked()
{
file = new QFile(QApplication::applicationDirPath() + "/" + ui->lineEdit->text() + ".jpg");
file->open(QIODevice::WriteOnly);
QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);
QUrl url("http://192.168.1.166:80/test.jpg");
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
reply = accessManager->get(request);
progressBar = new QProgressBar();
progressBar->setValue(0);
progressBar->show();
connect((QObject *)reply, SIGNAL(readyRead()), this, SLOT(readContent()));
connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),this,SLOT(loadError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(downloadProgress(qint64 ,qint64)), this, SLOT(loadProgress(qint64 ,qint64)));
}
void MainWindow::readContent()
{
file->write(reply->readAll());
}
void MainWindow::replyFinished(QNetworkReply*)
{
if(reply->error() == QNetworkReply::NoError)
{
reply->deleteLater();
file->flush();
file->close();
}
else
{
QMessageBox::critical(NULL, tr("Error"), "Failed!!!");
}
}
void MainWindow::loadProgress(qint64 bytesSent, qint64 bytesTotal)
{
qDebug() << "loaded" << bytesSent << "of" << bytesTotal;
progressBar->setMaximum(bytesTotal);
progressBar->setValue(bytesSent);
}
void MainWindow::loadError(QNetworkReply::NetworkError)
{
qDebug()<<"Error: "<<reply->error();
}