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 байт
*/


}