2013-06-01 57 views
5

Tôi đang cố gắng tải tệp lên máy chủ bằng QNetworkAccessManager trong Qt 5.0 trên CentOS 6.4.Lỗi tải lên tệp với QNetworkAccessManager

Tôi đã thử làm theo một vài ví dụ trực tuyến nhưng không có ví dụ nào trong số đó hoạt động. QFTP hoạt động tốt nhưng chậm và hiện không được chấp nhận. Mã của tôi cho việc tải lên là:

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

Đây là sản phẩm từ chương trình của tôi:

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

Nhìn vào các tài liệu, 202 phương tiện:

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

Bất kỳ lời đề nghị?

Trả lời

4

Thay đổi:

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

để

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

Nó là cần thiết để chỉ ra những liên kết đến một tập tin.