Rapidshare API と Qt を使用してファイルをアップロードしようとしています。API は、POST メソッドのすべてのパラメーターを使用して 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 が「&」などの文字をクエリ区切り文字として解釈する理由についても、16 進ダンプを使用して元のファイルとアップロードされたファイルを比較し、「CR」文字の解釈を見つけました。生のヘッダーを設定してみましたが、役に立ちませんでした。
APIを使ってバイナリデータをそのままrapidshareに送信する方法。何か不足している場合はお知らせください。