qt/C++에서 google-drive로 이미지를 업로드하려고합니다. 내 코드 : 내가 사용하여 내 구글 드라이브에 업로드 할 이미지를 생각 qt.Now에 그것을 어떻게 http://pastebin.com/3CVcY3Rv마임 부분이 0 인 멀티 파트 요청이 잘못되었습니다. Google 드라이브 업로드 qt (해결됨)
이다 this.Hopefully이 도움이 :
void googled::tryMultipartUpload(QNetworkReply *reply){
QByteArray d = reply->readAll();
qDebug() << d;
QString x = getValue(d,"access_token");
qDebug() << x;
x = "Bearer " + x;
am = new QNetworkAccessManager;
QUrl url("https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart");
QNetworkRequest request;
request.setUrl(url);
QString bound = "asd";
QByteArray data(QString("--"+bound+"\r\n").toAscii());
data.append("Content-Type: application/json; charset=UTF-8\r\n\r\n");
data.append("{\"title\":\"Meta\"}\r\n");
data.append("--"+bound+"\r\n");
data.append("Content-Type: image/jpeg\r\n\r\n");
QFile file("/home/saurabh/Pictures/08_wallpaper_mount_everest.jpg");
file.open(QIODevice::ReadOnly);
data.append(file.readAll());
data.append("\r\n");
data.append("--"+bound+"--\r\n");
request.setRawHeader(QString("Content-Type").toAscii(),QString("multipart/related;boundary="+bound).toAscii());
request.setRawHeader(QString("Content-Length").toAscii(),QString("2000000").toAscii());
request.setRawHeader(QString("Host").toAscii(),QString("www.googleapis.com").toAscii());
request.setRawHeader(QString("Authorization").toAscii(),x.toAscii());
qDebug() << data.data();
QObject::connect(am, SIGNAL(finished(QNetworkReply *)),
this, SLOT(uploadfinishedSlot(QNetworkReply *)));
am->post(request,data);
}
코드에 여러 가지 오류가 있습니다.'str + = QString ("some string"). toAscii()'를 사용해서는 안되며, 결과는 QString으로 다시 변환됩니다. '충분하다. 멀티 파트 요청에 바이너리 데이터가 포함될 수 있는지 잘 모르겠습니다. 데이터를 BASE64로 인코딩하면 안됩니까? "42 + 13"(공백 포함) 및 "42 + 13"(공백없이) 경계 문자열로 사용합니다. 그들은 평등해야합니다. –
@ york.beta 제안한 코드가 변경되었지만 오류가 발생했습니다. 변형 된 멀리 파트 body.My 코드가 변경된 후 : http : //pastebin.com/mbApz4W7 – saurabh