2013-06-01 29 views
5

QNetworkAccessManager kullanarak QOSuride CentOS 6.4 üzerinde bir sunucuya dosya yüklemeye çalışıyorum.QNetworkAccessManager ile Dosya Yükleme Hatası

Birkaç örneği çevrimiçi olarak denemeyi denedim ancak bunların hiçbiri çalışmıyor. QFTP sadece iyi çalışıyor, ancak yavaş ve şimdi kullanımdan kaldırıldı. yükleme için Benim kodudur:

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(); 
} 

Bu benim programın çıktısı şöyledir:

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

Herhangi öneriler:

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

docs, 202 araç baktığımızda?

cevap

4

Değişimi:

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

Bir dosya bağlantısını işaret etmek gereklidir

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

için.