Я сравнил данные, которые я отправляю и получаю, и оказалось, что конец моих данных, которые я получаю на моем сервере, обрезан, есть ли у QNetworkmanager ограничение длины запроса?
структура фотографии.
typedef struct Photo_{
std::string name;
int likes;
int comments;
int id;
int user_id;
QByteArray img_in_bytes;
}photo;
Вот функция, которая преобразует данные в json и отправляет их на сервер.
void MainWindow::send_new_photo_to_server(photo item){
QJsonDocument doc;
QNetworkRequest req(url);
qDebug() << QString::number(item.likes);
qDebug() << QString::number(item.comments);
qDebug() << QString::fromStdString(item.name);
req.setHeader(QNetworkRequest::ContentTypeHeader, "text");
req.setRawHeader("request-type", "addMainEntity");
QBuffer buf(&item.img_in_bytes);
QByteArray img_in_bytes = buf.data().toBase64();
QJsonObject object;
object.insert("comments", QString::number(item.comments));
object.insert("img_in_bytes",QLatin1String(img_in_bytes));
object.insert("name", QString::fromStdString(item.name));
object.insert("likes", QString::number(item.likes));
doc.setObject(object);
qDebug() << doc.toJson();
manager->post(req, doc.toJson());
qDebug() << "here you are";
}
Есть функция, которая обрабатывает запрос. Нет необходимости в функции загрузки, потому что к моменту вызова данные уже обрезаны.
void Server::get_request(){
i++;
qDebug() << i << "\n";
QTcpSocket* socket = qobject_cast<QTcpSocket*>(sender());
QString data = socket->readAll();
socket->waitForBytesWritten(3000);
qDebug() << "Recieved data: \n" << data;
this->process_request(data);
}