2013-06-01 14 views
5

CentOS 6.4のQt 5.0でQNetworkAccessManagerを使用してサーバーにファイルをアップロードしようとしています。QNetworkAccessManagerによるファイルアップロードエラー

私はいくつかの例をオンラインで試してみましたが、どれも動作しません。 QFTPは正常に動作しますが、遅くなり、廃止予定です。アップロードのための私のコードは次のとおりです。

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

これは私のプログラムから出力された:

ドキュメントを見て
Completed: 0/0 0% 
Finished 
"Cannot open ftp://username:[email protected]/: is a directory" 
Error code: 202 

、202の手段:

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

任意の提案ですか?

答えて

4

変更:

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

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

ファイルへのリンクを指摘する必要があります。

関連する問題