2013-06-18 1 views
1

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); 

}

+2

코드에 여러 가지 오류가 있습니다.'str + = QString ("some string"). toAscii()'를 사용해서는 안되며, 결과는 QString으로 다시 변환됩니다. '충분하다. 멀티 파트 요청에 바이너리 데이터가 포함될 수 있는지 잘 모르겠습니다. 데이터를 BASE64로 인코딩하면 안됩니까? "42 + 13"(공백 포함) 및 "42 + 13"(공백없이) 경계 문자열로 사용합니다. 그들은 평등해야합니다. –

+0

@ york.beta 제안한 코드가 변경되었지만 오류가 발생했습니다. 변형 된 멀리 파트 body.My 코드가 변경된 후 : http : //pastebin.com/mbApz4W7 – saurabh

답변

2

당신은하지 않습니다 boundary 속성에 따옴표를 사용합니다. 다음 내용 유형을 사용하십시오.

QString y = "multipart/related; boundary=\"" + QString("42+13") + "\""; 
+0

코드가 변경되었지만 오류가 발생합니다. 변형 된 multipart body.My 변경 후 코드 : http : //pastebin.com/mbApz4W7 도움이됩니다. – saurabh

관련 문제