使用REST,QT和PUT请求将zip文件上传到amazon S3时的奇怪回复

时间:2016-02-01 14:49:11

标签: qt rest amazon-s3

我试图将zip文件上传到S3亚马逊,但我有问题。 我正在使用QT:发送请求和接收回复。 我发送带有zip文件的URL这里是代码:

    QFile *file = new QFile(fileName);
    QString fileSize = QString::number(file->size());

    file->open(QIODevice::ReadOnly);
    QByteArray data(file->readAll());

    QNetworkRequest req;
    QNetworkReply* rep;

    req.setUrl(QUrl(url /*cant post the real URL*/));
    req.setRawHeader(QString("Content-Length").toUtf8(), fileSize.toUtf8());

    rep = m_manager->post(req, data);

    connect(rep, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();

    CheckReply(rep);

这里是CheckReply函数

bool CheckReply(QNetworkReply *reply)
{
  if (reply->error())
  {
    qDebug() << "ERROR!";
    qDebug() << reply->errorString();
    return false;
  }
  else
  {
     qDebug() << reply->header(QNetworkRequest::ContentTypeHeader).toString();
     qDebug() << reply->header(QNetworkRequest::LastModifiedHeader).toDateTime().toString();
     qDebug() << reply->header(QNetworkRequest::ContentLengthHeader).toULongLong();
     qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
     qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
     return true;
  }
}

问题是,CheckReply()显示了这个消息:&#34;错误下载 - 请求URL - &#34;。 为什么会发生这种情况,上传不下载。

感谢

1 个答案:

答案 0 :(得分:0)

好的,我发现问题,以防任何人遇到同样的问题。

错误是我使用QUrl(QSting)来设置请求网址。

而不是使用它:QUrl::fromEncoded(QByteArray)

QUrl::fromEncoded(/your QString/.toUtf8())