- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试制作自动创建子目录并将文件放入其中的 ftp uploader 。
我的问题是:
我知道 QFtp 有 list()
和 listInfo()
但我不明白我应该如何在我的代码中使用。
这是我实现 uploader 的方式:
ftp = new QFtp();
ftp->setTransferMode(QFtp::Passive);
ftp->connectToHost(g.ftp_host);
ftp->login(g.ftp_user,g.ftp_password);
ftp->list();
ftp->cd(g.ftp_defaultdir+g.phocadir);
for (int i = 0; i<FulluploadFilenames->size(); i++){
ftp->mkdir(_taj->at(i)); // should check if exists
ftp->cd(_taj->at(i));
ftp->mkdir(_year->at(i));
ftp->cd(_year->at(i));
ftp->mkdir(_month->at(i));
ftp->cd(_month->at(i));
qdata = new QFile(FulluploadFilenames->at(i),this);
if (qdata->open(QIODevice::ReadOnly)) {
ftp->put(qdata,uploadFilenames->at(i));
ftp->list();
}
ftp->cd("../");
ftp->cd("../");
ftp->cd("../");
}
ftp->close();
此 make 和 cd 到类似这样的内容:/123123123/2015/05/
并在此处上传文件。
有人可以帮忙检查目录是否存在吗?
更新:
我没有检查目录是否存在,而是强制 mkdir 同步工作,所以即使失败也没关系。
void MainWindow::doUpload(){
ftp = new QFtp();
ftp->connectToHost(g.ftp_host);
ftp->login(g.ftp_user,g.ftp_password);
ftp->cd(g.ftp_defaultdir+g.phocadir);
ftp->list();
// making directories
for (int i = 0; i<FulluploadFilenames->size(); i++){
runCommand(ftp, ftp->mkdir(_taj->at(i)));
runCommand(ftp, ftp->mkdir(_taj->at(i)+"/"+_year->at(i)));
runCommand(ftp, ftp->mkdir(_taj->at(i)+"/"+_year->at(i)+"/"+_month->at(i)));
}
// uploading files
for (int i = 0; i<FulluploadFilenames->size(); i++){
ftp->cd(_taj->at(i)+"/"+_year->at(i)+"/"+_month->at(i));
qdata = new QFile(FulluploadFilenames->at(i),this);
if (qdata->open(QIODevice::ReadOnly)) {
ftp->put(qdata,uploadFilenames->at(i));
}
ftp->cd("../../../");
ui->progressBar->setValue(i+1);
ui->progressBar->update();
QCoreApplication::processEvents();
}
ftp->close();
}
...
void MainWindow::runCommand(QFtp *ftp, int commandId){
QEventLoop loop;
connect(ftp, SIGNAL(commandFinished(int, bool)), &loop, SLOT(quit()));
loop.exec();
}
最佳答案
函数 list()
异步工作。调用此函数后,它会立即返回唯一标识符。此 id 在命令开始时在 commandStarted()
信号中传递,在列表命令完成时在 commandFinished()
信号中传递。在这两个信号之间 listInfo()
信号为找到的每个目录条目发出。
因此,在上传到目录之前,您必须检查所有 QUrlInfo
对象,从 listInfo()
信号传递到 commandFinished()
信号发出。
关于c++ - 如何使用 QFtp::list 和 QFtp::listInfo 检查目录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143839/
我尝试制作自动创建子目录并将文件放入其中的 ftp uploader 。 我的问题是: 如果目录已经存在,我的 uploader 不会上传文件。 在下一个 mkdir 时失败(没有错误,只是没有上传文
我在工作中继承了一个项目,在某个时候我应该使用 QFtp(与信号和插槽连接)(递归地)将文件夹及其内容发送到 ftp 服务器。 除了我尝试创建一个目标目录之外,这完全没问题: m_pFtp->mkdi
我想在我的 Qt 项目中使用 ftp。但是当我添加 #include 在程序中并运行编译器显示:“错误:QFtp:没有这样的文件或目录”。 最佳答案 您应该将这样的内容添加到您的项目文件中。 QT +
QT 版本 5.4。 我正在尝试使用 QFtp 从特定目录下载所有文件。 有时信号 commandFinished(int, bool) 发送得太早。 我使用信号 dataTransferProgre
你好,我正在学习 qt 并尝试使用 QFtp 上传文件,我编写了以下代码 this->connect(this->ftp, SIGNAL(done(bool)), this, SLOT(ftpDone
我遇到了 QFtp 的问题。我想从我的服务器下载一个单行(8 字节)的 .txt 文件,所以我编写了以下代码,但它不起作用。在 folder1 目录中创建了文件“actions.txt”。我可以在客户
我正在尝试使用 QFtp 将 .avi 文件上传到 FTP 服务器: void MyFTP::recordingDone(QString &fileName){ remainingFiles.push
我实际上想从 ftp 服务器获取最新的文件。为此,我目前正在使用 QFtp 访问服务器并检索我需要的内容。 这就是我所做的(比如每 3 分钟一次): 到服务器的连接和身份验证。 list() 命令列出
我正在编写一个使用 Qt 和 QFtp 类的客户端,以从 FTP 服务检索文件。 FTP 服务需要使用 TLS 连接。在哪里可以设置 QFtp 对象以使用 TLS?我已经尝试使用从 FTP 客户端检索
我有使用 QFtp 类的应用程序。我是在 Qt 4 版本中制作的。 但是现在我想在 Qt5 中编译 QFtp classe,但它显示了一些错误,例如: 'QFtp' 没有命名和类型。 如何解决这个问题
我想使用 QFtp 将文本文件上传到 FTP 服务器。 这是我的代码: QFile *file = new QFile("test.txt"); QFtp *ftp = new QFtp(); if(
我现在正在移植到 Qt5.2.1 等中的 QNetworkAccessManager 而不是 Qt4.8.2 中的 QFtp 我有以下问题: 是否可以将 QFtp::rawCommand("SITE
我是一名优秀的程序员,十分优秀!