2013-06-01 6 views
5

Ich versuche, eine Datei auf einen Server mit QNetworkAccessManager in Qt 5.0 auf CentOS 6.4 hochladen.Datei Upload-Fehler mit QNetworkAccessManager

Ich habe versucht, ein paar Beispiele online, aber keiner von ihnen funktioniert. QFTP funktioniert einwandfrei, ist jedoch langsam und wird nicht weiter unterstützt. Mein Code für den Upload ist:

void ftp::start(QString fileLocation) 
{ 

    QUrl url2("ftp://example.com"); 
    url2.setUserName(ftpusername); 
    url2.setPassword(ftppassword); 

    data = new QFile(fileLocation, this); 
    if (data->open(QIODevice::ReadOnly)) { 
     nam = new QNetworkAccessManager(); 
     reply = nam->put(QNetworkRequest(url2), data); 

     connect(nam, SIGNAL(finished(QNetworkReply*)),this, SLOT(requestFinished(QNetworkReply*))); 
     connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(uploadProgress2(qint64, qint64))); 
     connect(reply, SIGNAL(finished()), SLOT(uploadDone())); 
    } 
    else 
    { 
     qDebug() << "Could not open file to FTP"; 
    } 
} 

void ftp::uploadProgress2(qint64 done, qint64 total) { 
    double percent; 
    if(done > 0 && total > 0) 
    { 
     percent = (done*100)/total; 
    } 
    myParent->addLog("Completed: " + QString::number(done) + "/" + QString::number(total) + " " + QString::number(percent) + "%"); 
} 

void ftp::uploadDone() { 
    qDebug() << "Error Code: " << reply->error(); 
    data->deleteLater(); 
    reply->deleteLater(); 
} 

void ftp::requestFinished(QNetworkReply* r) 
{ 
    qDebug() << "Finished "; 
    qDebug()<< r->errorString(); 
} 

Dies ist die Ausgabe von meinem Programm ist:

Completed: 0/0 0% 
Finished 
"Cannot open ftp://username:[email protected]/: is a directory" 
Error code: 202 

bei der Dokumentation der Suche, 202 Mittel:

QNetworkReply::ContentOperationNotPermittedError The operation requested on the remote content is not permitted 

Irgendwelche Vorschläge?

Antwort

4

Wechsel:

QUrl url2("ftp://example.com"); 

zu

QUrl url2("ftp://example.com/somefile"); 

Es ist notwendig, den Link zu einer Datei hinweisen.

Verwandte Themen