在Qt中,我需要發送一個sqlite文件(二進制文件)到一個網站使用後。所以我所做的是打開文件並嘗試將它的內容讀入QByteArray,我可以藉助QNetworkRequest發送給服務器。我可以在文件發送到服務器時處理請求,但文件只是空的。我讀的sqlite文件的內容錯了嗎? (我知道文件excist)你能看到我的代碼有什麼問題嗎?使用Qt發送二進制文件到服務器
QByteArray data;
QFile file("database.sqlite");
if (!file.open(QIODevice::ReadWrite))
return;
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_6);
in >> data ;
QString boundary;
QByteArray dataToSend; // byte array to be sent in POST
boundary="-----------------------------7d935033608e2";
QString body = "\r\n--" + boundary + "\r\n";
body += "Content-Disposition: form-data; name=\"database\"; filename=\"database.sqlite\"\r\n";
body += "Content-Type: application/octet-stream\r\n\r\n";
body += data;
body += "\r\n--" + boundary + "--\r\n";
dataToSend = body.toAscii();
QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request(QUrl("http://www.mydomain.com/upload.aspx"));
request.setRawHeader("Content-Type","multipart/form-data; boundary=-----------------------------7d935033608e2");
request.setHeader(QNetworkRequest::ContentLengthHeader,dataToSend.size());
connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)),this, SLOT(sendReportToServerReply(QNetworkReply*)));
QNetworkReply *reply = networkAccessManager->post(request,dataToSend); // perform POST request
接受的答案是錯誤的,在您的答案中解釋的原因。感謝您清理它。 – 2012-12-21 18:35:59