void TabWidget::startUpload() { QString uri; m_ui->label_progress->setText(tr("Uploading...")); QNetworkRequest request; if (script_value.property("premium").toBoolean() == true) uri = QString("/premium/files"); else uri = QString("/files"); request.setUrl(QUrl(QString("http://") + script_value.property("upload_host").toString() + uri)); request.setRawHeader("Host", script_value.property("upload_host").toString().toUtf8()); request.setRawHeader("Accept-Language","en"); request.setRawHeader("User-Agent", USER_AGENT); request.setRawHeader("Cookie", session.toUtf8()); request.setRawHeader("Content-type", QString("multipart/form-data; boundary=" + Payload::boundary).toUtf8()); if (settings.value("api_key_enabled").toBool() && settings.value("api_key").toString().size() > 10) request.setRawHeader("X-API-Key", settings.value("api_key").toString().toUtf8()); request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true); payload = new Payload(upload_file, script_value); start_date = last_date = QDateTime::currentDateTime(); reply = network_manager.post(request, payload); connect(reply, SIGNAL(finished()), this, SLOT(uploadRequestFinished())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(uploadError(QNetworkReply::NetworkError))); connect(reply, SIGNAL(uploadProgress(qint64, qint64) ), this, SLOT(updateDataSendProgress(qint64,qint64))); //_cprintf("uploading...\n"); }
void RGhostUploader::doUpload() { qDebug() << "RGhost uploader::" << "Starting real upload"; QByteArray imageBA; QBuffer buffer(&imageBA); image.save(&buffer, "PNG"); if (imageBA.size() > json.property("upload_limit").toInteger() * 1024 * 1024) { qDebug() << "Image is too big"; return; } QByteArray boundary("RghostUploadBoundaryabcdef0123456789"); // wat? QNetworkRequest request; QString uri = QString("/files"); // todo premium? QString host = json.property("upload_host").toString(); request.setUrl(QUrl(QString("http://") + host + uri)); //request.setUrl(QUrl(QString("http://") + "tools.so/request.php")); request.setRawHeader("Host", host.toUtf8()); request.setRawHeader("Accept-Language","en"); request.setRawHeader("User-Agent", USER_AGENT); request.setRawHeader("Cookie", cookie.toUtf8()); request.setRawHeader("Content-type", QString("multipart/form-data; boundary=" + boundary).toUtf8()); /*if (settings.value("api_key_enabled").toBool() && settings.value("api_key").toString().size() > 10) request.setRawHeader("X-API-Key", settings.value("api_key").toString().toUtf8());*/ request.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true); QByteArray data; // auth token data.append("--"); data.append(boundary); data.append("\n"); data.append("Content-Disposition: form-data; "); data.append("name=\"authenticity_token\"" "\n\n"); data.append(json.property("authenticity_token").toString()); data.append("\n"); // actual image data.append("--"); data.append(boundary); data.append("\n"); data.append("Content-Disposition: form-data; "); data.append("Content-Type: image/png; "); data.append("name=\"file\";"); data.append("filename=\"" +filename+ "\""); data.append("\n"); data.append("Content-Transfer-Encoding: binary"); data.append("\n\n"); data.append(imageBA); data.append("\n"); data.append("--"); data.append(boundary); data.append("--"); reply = netManager->post(request, data); connect(reply, SIGNAL(finished()), this, SLOT(uploadRequestFinished())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(networkError(QNetworkReply::NetworkError))); //connect(reply, SIGNAL(uploadProgress(qint64, qint64) ), this, SLOT(updateDataSendProgress(qint64,qint64)));*/ /* Content-Length: 112926 Content-Type: multipart/form-data; boundary=----------EQEWzuIORzmD8YYc9UaH8H Content-Disposition: form-data; name="utf8" ✓ Content-Disposition: form-data; name="authenticity_token" YfLJfy4WDVW5R5zl1Dj3UUDFf5/J8gY03tJupmEPzAM= Content-Disposition: form-data; name="file"; filename="2012-06-25-222318_1366x768_scrot.png" Content-Type: image/png Тело запроса 112393 байт */ }