请问各位大神,我现在有一个程序可以实现将单个的文件通过HTTP协议上传到web服务器,但是现在我有一个文件夹,里面有很多文件,而且是随着时间不断增加的,我应该怎么把这些文件都上传至服务器
遍历文件夹,然后读取每一个文件,然后再调用你的上传接口一个个文件上传
QStringList file_path;
QDir dir("C:/2017-09-08");
QFileInfoList info_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::AllDirs);
foreach(QFileInfo file_info, info_list)
{
if (file_info.isFile())
{
qDebug() << "remove file : " << file_info.absoluteFilePath();
file_path.append(file_info.absoluteFilePath());
QString file_name = file_info.fileName();
qDebug() <<file_name<<endl;
n++;
}
}
qDebug() <<n<<endl;
for(int i=0;i<n;i++)
{
QString filepath = file_path.at(i);
file = new QFile(filepath);
file->open(QIODevice::ReadOnly);
QNetworkAccessManager *accessManager1 = new QNetworkAccessManager(this); //在服务器上创建目录
accessManager1->setNetworkAccessible(QNetworkAccessManager::Accessible);
QByteArray data;
QUrl url1("http://localhost/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://localhost/upload.php?foldername=upload&filename=99.txt"); //如这里指定的上传文件至HTTP服务器目录中的upload目录中
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)));
}
程序倒是能传上去文件,但是一旦文件传完就会出现程序异常退出的情况,而且传输的文件不完整呢