Dear support,
I would like to upload files to my Dropbox Application via Qt in c++ but it returns "unknown error" despite the "curl -X POST" equivalent is working like a charm in CLI mode.
Do you what is wrong?
Here the code in QT Creator I wrote:
dropbox.h
#ifndef DROPBOX_H
#define DROPBOX_H
#include <QObject>
#include <QtNetwork/QNetworkAccessManager>
class DropBox : public QNetworkAccessManager
{
Q_OBJECT
public:
explicit DropBox(QObject *parent = nullptr) : QNetworkAccessManager(parent) {}
void upload(const QString filename);
signals:
public slots:
private:
};
#endif // DROPBOX_H
dropbox.cpp
#include "dropbox.h"
#include <QFile>
#include <QNetworkReply>
void DropBox::upload(const QString filename)
{
QNetworkRequest request(QUrl("https://content.dropboxapi.com/2/files/upload"));
request.setRawHeader(QByteArray("Authorization"), QByteArray("Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
QString dropboxArg = QString("{\"path\": \"/mouvdetect/QtHumanDetector/%1\",\"mode\": \"add\",\"autorename\": true,\"mute\": false,\"strict_conflict\": false}").arg(filename);
request.setRawHeader(QByteArray("Dropbox-API-Arg"), dropboxArg.toUtf8());
request.setRawHeader(QByteArray("Content-Type"), QByteArray("application/octet-stream"));
QFile *file = new QFile(filename);
file->open(QIODevice::ReadOnly);
QByteArray content = file->readAll();
request.setRawHeader(QByteArray("Content-Length"), QByteArray::number(content.size()));
QNetworkReply *reply = this->post(request, content);
QObject::connect(reply,
&QNetworkReply::finished,
[=](){
QString err = reply->errorString();
QString contents = QString::fromUtf8(reply->readAll());
qInfo() << "Error:" << err;});
}
In the above code, please replace the automatic emoji with "opening bracket equal sign closing bracket"
Please tell me if you need more information on how to compile and run this code with Qt Creator.
Best regards,
Philman