【发布时间】:2021-10-18 22:10:39
【问题描述】:
我想使用 Imgur API 上传 PNG 图像。当我将测试图像 (png) 转换为 Base64 时,我收到一个错误,指出它不是有效的文件类型。然后我从 Imgur API 文档 (R0lGODlhAQABAIAAAAAAAP//yH5BAEAAAAALAAAABAAEAAAIBRAA7) 中获取测试图像,该文档适用于上传,通过转换器将其转换为“真实”图像,并使用它测试 Base64 转换。但是,我得到了一个不同的 Base64 字符串 (R0lGODlhAQABAOKCrAAAAAAAw7/Dv8O/IcO5BAEAAAAALAAAAAABAAEAAAIBRAA7)。
代码sn-p:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QUrl url("https://api.imgur.com/3/image");
QNetworkRequest request(url);
request.setRawHeader("Authorization", "Client-ID <hereIsTheClientID>");
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QFile image ("C:/Users/pietr/Desktop/image.gif"); // Result from converting example Base64 from Imgur API-Docs - this file can be read by photo viewers
image.open(QIODevice::ReadOnly);
QTextStream in (&image);
QByteArray imageArray = in.readAll().toUtf8().toBase64();
qDebug() << "Image data:" << imageArray;
QUrlQuery params;
params.addQueryItem("image", imageArray);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->post(request, params.query().toUtf8());
但是回复是……
{
"data":
{
"error":
{
"code":1003,
"message":"File type invalid (2)",
"type":"ImgurException",
"exception":[]},"request":"\/3\/image",
"method":"POST"
},
"success":false,
"status":400
}
我在使用 Base64 转换时出错了吗?为什么我从相同的图像中得到不同的值?
【问题讨论】: