使用Qt c++上传Facebook照片错误
Facebook photo upload error using Qt c++
我试图上传一张图片到Facebook,但它总是返回一个错误:"{"error":{"message":"(#324) Requires upload file","type":"OAuthException","code":324,"fbtrace_id":"Fsi2f/H6ggp"}}"
。我正在使用Qt 4.8,并在我的代码中设置如下所述的多部分请求。
QFile file(m_fileName);
QFileInfo fileInfo(m_fileName); // to get info on the file
bool open = file.open(QIODevice::ReadOnly);
if(open){
// start the upload
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart privacyPart;
privacyPart.setHeader(QNetworkRequest::ContentTypeHeader, "text/plain; charset=UTF-8");
privacyPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name="privacy"");
privacyPart.setBody("{"value":"FRIENDS_OF_FRIENDS"}");
QHttpPart filePart;
filePart.setHeader(QNetworkRequest::ContentTypeHeader, "image/png");
filePart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name="source"; filename = "" + fileInfo.fileName() + """);
filePart.setRawHeader("Content-Transfer-Encoding", "binary");
filePart.setBody(file.readAll());
multiPart->append(privacyPart);
multiPart->append(filePart);
QNetworkRequest request(url);
request.setRawHeader("Authorization", "OAuth " + accessToken.toUtf8());
QNetworkReply* reply = m_networkAccessManager->post(request, multiPart);
multiPart->setParent(reply); // delete multipart with reply
// connect signals
connect(reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
connect(reply, SIGNAL(finished()), this, SLOT(replyFinished()));
}
else{
qDebug() << "Unable to open file" << fileName();
qDebug() << file.errorString();
}
我设法解决了手动写入数据的问题。下面的代码工作完美,不确定我做错了什么与QHttpMultiPart
。我希望有人能指点我一下。
// start the upload
QString boundary("----eidevelop1010101010");
QString contentType("multipart/form-data; boundary="+boundary);
QByteArray data;
data += QString("--"+boundary + "rn").toUtf8();
data += QString("Content-Disposition: form-data; name="source";filename="+fileInfo.fileName()+"rn").toUtf8();
data += QString("Content-Type: image/jpegrnrn").toUtf8();
data += file.readAll();
data += "rn";
data += QString("--" + boundary + "rn").toUtf8();
data += QString("--" + boundary + "rn").toUtf8();
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentType));
request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant(QString::number(data.size())));
QNetworkReply* reply = m_networkAccessManager->post(request, data);
// connect signals
connect(reply, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(uploadProgress(qint64,qint64)));
connect(reply, SIGNAL(finished()), this, SLOT(replyFinished()));
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 使用Qt c++上传Facebook照片错误