简体   繁体   English

将Q64中的Base64字符串写为二进制文件(QFile)

[英]Write Base64 string in QString as binary file (QFile)

So I have an issue with downloading attachments from gmail api. 所以我从gmail api下载附件时遇到问题。 The code is basically smth like that: 该代码基本上是这样的:

QJsonDocument doc;

QUrl url("https://www.googleapis.com/gmail/v1/users/me/messages/12d144feec288dae/attachments/ANGjdJ8ZGywUR2NG7G0rIXH-mVGNHcFRnjlbz71ZtyUM3zn-sZtPHXVE5T5TqwzkFHovu7mB2zA2wqjIHNA8ysiUPmPbrVoKveuWJjaLFXky0STyESh4uxOOz2933W4uMI6PsynBHS4cpVNMBvSa");
QNetworkRequest request;
request.setRawHeader("Authorization", "Bearer" + myToken);
request.setUrl(url);

QNetworkAccessManager manager;

QNetworkReply *reply = manager.get(request);
QEventLoop wait;

QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)), &wait, SLOT(quit()));

QTimer::singleShot(5000, &wait, SLOT(quit()));
wait.exec();
doc = QJsonDocument::fromJson(reply->readAll());


//this is working wrong
QString str = doc.object().value("data").toString();
QByteArray arr;
arr.append(str);
QByteArray b64 = QByteArray::fromBase64(arr);
QByteArray fb64 = arr.toBase64();
QFile f("Math.rar");
f.open(QIODevice::WriteOnly);
f.write(b64);
f.close();

I know its not the best code, but i just want to get how to properly save file from Base64. 我知道它不是最好的代码,但是我只想了解如何从Base64中正确保存文件。 Can anyone help? 有人可以帮忙吗?

I solved the problem. 我解决了问题。 the deal was to add QByteArray::Base64UrlEncoding in function QByteArray::fromBase64. 要做的是在函数QByteArray :: fromBase64中添加QByteArray :: Base64UrlEncoding。 So, the example will be like that: 因此,示例将如下所示:

QString str = doc.object().value("data").toString(); //getting a binary data from Json
QByteArray arr;
arr.append(str);
QByteArray b64 = QByteArray::fromBase64(arr, QByteArray::Base64UrlEncoding);
QFile f("Math.rar");
f.open(QIODevice::WriteOnly);
f.write(b64);
f.close();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM