Trong Qt, tôi cần gửi tệp sqlite (tệp nhị phân) đến trang web bằng cách sử dụng bài đăng. Vì vậy, những gì tôi làm là tôi mở tập tin và cố gắng đọc nội dung của nó vào một QByteArray mà tôi với sự giúp đỡ của QNetworkRequest có thể gửi đến máy chủ. Tôi có thể xử lý yêu cầu khi tệp được gửi tới máy chủ nhưng tệp chỉ trống. Tôi có đọc nội dung của tệp sqlite sai không? (Tôi biết rằng các excist tập tin) Bạn có thể thấy bất cứ điều gì sai với mã của tôi?Gửi tệp nhị phân đến máy chủ bằng cách sử dụng bài đăng với 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
Câu trả lời được chấp nhận là sai vì những lý do được giải thích trong câu trả lời của bạn. Cảm ơn bạn đã xóa nó. –