Qt5.X FTP上傳與下載
Cliet.h
#ifndef CLIET_H
#define CLIET_H
#include <QFile>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkReply>
#include <QByteArray>
#include <QMessageBox>
#include <QFileInfo>
#include <QDir>
class FtpCLient:public QObject
{
Q_OBJECT
protected slots:
void finished(QNetworkReply * reply);
public:
FtpCLient();
void FtpGet(QString sor, QString dev);
void FtpPut(QString source, QString dev);
void FtpSetUserInfor(QString user, QString pwd);
void FtpSetHostPort(QString str, int port =21);
private:
QFile * m_pFile;
QNetworkReply *m_pReply;
QNetworkAccessManager * m_pManager;
QUrl * m_pUrl;
};
#endif // CLIET_H
Cliet.cpp
#include "cliet.h"
FtpCLient::FtpCLient()
{
m_pManager = new QNetworkAccessManager();
m_pUrl = new QUrl();
m_pUrl->setScheme("ftp");
m_pUrl->setHost("192.168.0.217");
connect(m_pManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply *)));
}
void FtpCLient::finished(QNetworkReply * reply)
{
m_pFile->write(reply->readAll());
m_pFile->flush();
m_pFile->close();
reply->deleteLater();
}
//設定FTP伺服器使用者名稱和密碼
void FtpCLient::FtpSetUserInfor(QString user, QString pwd)
{
m_pUrl->setUserName(user);
m_pUrl->setPassword(pwd);
}
//設定地址和埠
void FtpCLient::FtpSetHostPort(QString str, int port )
{
m_pUrl->setHost(str);
m_pUrl->setPort(port);
}
//下載檔案
void FtpCLient::FtpGet(QString sor, QString dev)
{
QFileInfo info;
info.setFile(dev);
m_pFile = new QFile(info.filePath());
m_pFile->open(QIODevice::Append|QIODevice::WriteOnly);
m_pUrl->setPath(sor);
m_pReply = m_pManager->get(QNetworkRequest(*m_pUrl));
}
//上傳檔案
void FtpCLient::FtpPut(QString source, QString dev)
{
qDebug()<<"start";
QFile file(source);
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
qDebug()<<"start1";
m_pFile = new QFile(dev);
m_pFile->open(QIODevice::ReadOnly|QIODevice::WriteOnly);
m_pUrl->setPath(dev);
m_pManager->put(QNetworkRequest(*m_pUrl), data);
qDebug()<<"start2";
}
呼叫
void Debugwidget::on_input_clicked()
{
QString file_path = QFileDialog::getOpenFileName(this,"請選擇待匯入ENI檔案","./","*.xml");
if(file_path!="")
{
QString dev;
for(int i=file_path.size()-1;i>=0;i--)
{
if(file_path[i]=='/')
{
dev = file_path.right(file_path.size()-i-1);
break;
}
}
client.FtpPut(file_path,"ENI/"+dev);
}
}
void Debugwidget::on_inputOtherFile_clicked()
{
QString file_path = QFileDialog::getOpenFileName(this,"請選擇待匯入其他檔案","./","*.xml");
if(file_path!="")
{
QString dev;
for(int i=file_path.size()-1;i>=0;i--)
{
if(file_path[i]=='/')
{
dev = file_path.right(file_path.size()-i-1);
break;
}
}
client.FtpPut(file_path,dev);
}
}
相關文章
- ftp上傳工具下載,ftp上傳工具下載使用教程,Linux如何配置ftp伺服器?FTPLinux伺服器
- 從ftp上傳下載檔案(二)FTP
- 從ftp上傳下載檔案(一)FTP
- C# FTP 上傳 下載(彙總)C#FTP
- C# FTP上傳下載(支援斷點續傳)C#FTP斷點
- C# 上傳下載ftp(支援斷點續傳)C#FTP斷點
- 檔案上傳與下載
- 檔案的上傳與下載
- python寫的FTP簡單上傳下載檔案薦PythonFTP
- minio檔案上傳與下載
- HttpWebChilent上傳與下載進度條HTTPWeb
- 如何在命令列中使用 ftp 命令上傳和下載檔案命令列FTP
- Linux使用Shell指令碼實現ftp的自動上傳下載Linux指令碼FTP
- 定時ftp上傳,如何設定定時ftp上傳檔案FTP
- Spring Boot 檔案上傳與下載Spring Boot
- (iPhone/iPad)檔案上傳與下載iPhoneiPad
- ftp上傳軟體,好用的ftp上傳軟體,使用方法FTP
- Jmeter 介面自動化連載 (14) - 上傳與下載JMeter
- ftp下載其他電腦上的東西FTP
- 檔案上傳下載
- PHP ftp上傳檔案PHPFTP
- ftp下載工具,ftp下載工具哪個好用,如何使用?FTP
- Linux下透過FTP上傳資料備份LinuxFTP
- [python][flask] Flask 圖片上傳與下載例子(支援漂亮的拖拽上傳)PythonFlask
- vue實現Excel檔案的上傳與下載VueExcel
- JavaWeb之實現檔案上傳與下載工具JavaWeb
- JavaWeb之實現檔案上傳與下載元件JavaWeb元件
- JavaWeb之實現檔案上傳與下載示例JavaWeb
- 檔案上傳與下載(免去重學煩惱)
- JAVA檔案上傳下載Java
- Vertx 檔案上傳下載
- centos上傳下載檔案CentOS
- 實現一個基於FTP協議的程式——檔案上傳下載器(十三)FTP協議
- FCKeditor 上傳ftp asp.netFTPASP.NET
- c# 上傳FTP檔案C#FTP
- JavaWeb之實現檔案上傳與下載外掛JavaWeb
- JavaWeb之實現檔案上傳與下載原始碼JavaWeb原始碼
- JavaWeb之實現檔案上傳與下載例項JavaWeb