私のアプリには、ファイルをサーバーにアップロードする方法がありますが、これは正常に機能します。
しかし、このメソッドを一度に複数回呼び出すと (chooseFilesDialog の結果を反復処理するなど)、最初の 7 個 (多かれ少なかれ) のファイルが正しくアップロードされ、他のファイルはアップロードされません。
これは、サーバーが同じソースからの X を超える接続を許可しないという事実とリンクしている必要があると思いますか?
アップロードが確立された無料の接続を待機するようにするにはどうすればよいですか?
これは私の方法です:
QString Api::FTPUpload(QString origin, QString destination)
{
qint64 timestamp = QDateTime::currentMSecsSinceEpoch();
QUrl url("ftp://ftp."+getLSPro("domain")+destination);
url.setUserName(getLSPro("user"));
url.setPassword(getLSPro("pwd"));
QFile *data = new QFile(origin, this);
if (data->open(QIODevice::ReadOnly))
{
QNetworkAccessManager *nam = new QNetworkAccessManager();
QNetworkReply *reply = nam->put(QNetworkRequest(url), data);
reply->setObjectName(QString::number(timestamp));
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(uploadProgress(qint64, qint64)));
return QString::number(timestamp);
}
else
{
qDebug() << "Could not open file to FTP";
return 0;
}
}
void Api::uploadProgress(qint64 done, qint64 total) {
QNetworkReply *reply = (QNetworkReply*)sender();
emit broadCast("uploadProgress","{\"ref\":\""+reply->objectName()+"\" , \"done\":\""+QString::number(done)+"\", \"total\":\""+QString::number(total)+"\"}");
}