0

我正在尝试使用 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。如果我遗漏了什么,请告诉我。

4

1 回答 1

1

postData.append("&filecontent=").append(data.toPercentEncoding());

于 2012-08-03T09:04:04.273 回答