1

Qt の QNetworkAccessManager クラスを使用してファイルをアップロードしようとしています。コードは次のとおりです。

   void TrainWindow::upload ()
   {
    QString upload_url;
    QString trigger_url;

    upload_url.append(hostname);
    trigger_url.append(hostname);

    upload_url.append("darshan");


    data = new QFile("/home/darshan/aindra/1.png", this);
    if (data->open(QIODevice::ReadOnly))
    {
        manager = new QNetworkAccessManager();
        reply = manager->post(QNetworkRequest(QUrl(upload_url)), data);
        connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(requestFinished(QNetworkReply*)));
        connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(uploadProgress(qint64, qint64)));
    }
    else
    {
        qDebug() << "Could not open file to FTP";
    }

 }

 void TrainWindow::requestFinished (QNetworkReply *r)
 {
    qDebug() << "Finished ";
    qDebug()<< r->errorString();
    qDebug()<<r->attribute( QNetworkRequest::HttpStatusCodeAttribute).toInt();
    qDebug()<<r->readAll();
    r->deleteLater();
 }

 void TrainWindow::uploadProgress(qint64 done, qint64 total) {
    double percent;
    if(done > 0 && total > 0)
    {
         percent = (done*100)/total;
    }
    qDebug()<<"Completed: " + QString::number(done) + "/" + QString::number(total) + " " + QString::number(percent) + "%";
}

アップロードしようとすると、次のようなエラー メッセージが表示されます。

"Unknown error" 
301 
"<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href=(given address)>here</a>.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at (given address) Port 80</address>
</body></html>

このエラーが発生する理由がわかりません。サーバーで画像をアップロードする必要がある場所へのupload_urlパスにファイル名を含めてみました(これはいくつかのブログで提供された解決策でした)が、今回は別のエラーメッセージが表示されました:

"Error downloading (given address) - server replied: Not Found" 
404 
"<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /darshan/1.png was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Ubuntu) Server at (given address) Port 80</address>
</body></html>
" 

アップロードしようとすると、ダウンロード中にエラーが表示されるのはなぜですか?

4

1 に答える 1

0

ステータス 301 はエラーではありません。単純なリダイレクトです。リダイレクト URL を取得してロードする必要がある場合があります。以下も参照してください。

于 2013-08-04T11:49:08.923 に答える