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伺服器
- 檔案上傳與下載
- 檔案的上傳與下載
- minio檔案上傳與下載
- 如何在命令列中使用 ftp 命令上傳和下載檔案命令列FTP
- Spring Boot 檔案上傳與下載Spring Boot
- HttpWebChilent上傳與下載進度條HTTPWeb
- 定時ftp上傳,如何設定定時ftp上傳檔案FTP
- ftp上傳軟體,好用的ftp上傳軟體,使用方法FTP
- servlet上傳下載Servlet
- ftp下載其他電腦上的東西FTP
- ftp下載工具,ftp下載工具哪個好用,如何使用?FTP
- PHP ftp上傳檔案PHPFTP
- Jmeter 介面自動化連載 (14) - 上傳與下載JMeter
- 檔案上傳下載
- [python][flask] Flask 圖片上傳與下載例子(支援漂亮的拖拽上傳)PythonFlask
- SpringMVC檔案上傳與下載(附工程原始碼)SpringMVC原始碼
- vue實現Excel檔案的上傳與下載VueExcel
- JavaWeb之實現檔案上傳與下載工具JavaWeb
- JavaWeb之實現檔案上傳與下載元件JavaWeb元件
- JavaWeb之實現檔案上傳與下載示例JavaWeb
- 檔案上傳與下載(免去重學煩惱)
- JAVA檔案上傳下載Java
- springboot 檔案上傳下載Spring Boot
- JavaWeb之實現檔案上傳與下載外掛JavaWeb
- JavaWeb之實現檔案上傳與下載原始碼JavaWeb原始碼
- JavaWeb之實現檔案上傳與下載例項JavaWeb
- JavaScript魔法:線上Excel附件上傳與下載的完美解決方案JavaScriptExcel
- 精講RestTemplate第6篇-檔案上傳下載與大檔案流式下載REST
- Java SFTP 上傳、下載等操作JavaFTP
- 上傳下載相關問題
- 使用SecureCRT上傳下載檔案Securecrt
- JavaWeb之實現檔案上傳與下載控制元件JavaWeb控制元件
- 免費的FTP工具,免費的FTP工具下載!FTP
- FTP工具中文版,FTP工具中文版下載FTP
- 綠色ftp工具,綠色ftp工具下載,使用教程。FTP
- xshell 使用 sftp上傳下載檔案FTP
- springcloud中feign檔案上傳、下載SpringGCCloud