我正在尝试使用 Rapidshare API 和 Qt 上传文件。可以通过 POST 方法调用 API,使用 POST 方法中的所有参数。
我可以上传文件,但是如果文件包含像“&”这样的字符,则文件不会完全上传(在某种程度上,当我从 rapidshare 下载相同的文件时,我会收到损坏的文件)。
我通过以下代码进行操作:
QByteArray postData;
postData.append(QString("sub=upload&login=%1&password=%2&filename=%3").arg(...).arg(...).arg(...));
QByteArray data;
if(FileMan.ReadFromDataFile(data) == true){
// Read file data
}
postData.append("&filecontent=").append(data);
...
QNetworkReply *reply = manager->post(request, postData);
connect(reply, SIGNAL(finished()), this, SLOT(onUploadCompleted()));
...
在发布文件数据时,为什么 rapidshare 将 '&' 之类的字符解释为查询分隔符,我还使用十六进制转储将原始文件与上传的文件进行了比较,并发现其解释 'CR' 字符也。我尝试设置原始标题但无济于事。
如何使用 API 将二进制数据按原样发送到 rapidshare。如果我遗漏了什么,请告诉我。