Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Facebook api POST request to image upload
Forum Updated to NodeBB v4.3 + New Features

Facebook api POST request to image upload

Scheduled Pinned Locked Moved Unsolved General and Desktop
1 Posts 1 Posters 689 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • _ Offline
    _ Offline
    _Disa_
    wrote on 6 Mar 2016, 01:19 last edited by
    #1

    Good day. I can't understend how create a POST request to upload an image. I was searching in the net, and found several versions. But is always response for me (after request) - "(# 324) Requires upload file".
    Thank you!

    ui->webView->load(QUrl("https://www.facebook.com/dialog/oauth?"
                               "client_id=XXXXXXXXXX&"
                               "display=popup&"
                               "response_type=token&"
                               "scope=user_status,user_photos,publish_actions&"
                               "redirect_uri=https://www.facebook.com/connect/login_success.html"));
    

    1

    QString uploadUrl = "https://graph.facebook.com/me/photos?access_token=" +
                            accessToken;
    
        QString photoPath = QCoreApplication::applicationDirPath() + "/image_example.png";
        
        QFileInfo fileInfo(photoPath);
        QFile file(photoPath);
    
        QString comment = "User provided message";
    
        QString bound="---------------------------17673466415141";
    
        QByteArray data;
    
        data.append("--" + bound + "\r\n");
        data.append("Content-Disposition: form-data; name=\"access_token\"\r\n\r\n");
        data.append(accessToken + "\r\n");
    
        data.append("--" + bound + "\r\n");
        data.append("Content-Disposition: form-data; name=\"source\"; filename=\""
                    + file.fileName()+"\"\r\n");
        data.append("Content-Type: image/" + fileInfo.suffix().toLower() + "\r\n\r\n");
        data.append(file.readAll());
        data.append("\r\n");
    
        data.append("--" + bound + "\r\n");
        data.append("Content-Disposition: form-data; name=\"message\"\r\n\r\n");
        data.append(comment);
        data.append("--" + bound + "\r\n");
    
        QNetworkRequest request(uploadUrl);
    
        request.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
        request.setRawHeader("Accept-Encoding", "gzip,deflate");
        request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        request.setRawHeader("Keep-Alive", "300");
    
        request.setRawHeader("Content-Type",
                             QString("multipart/form-data; boundary=" + bound).toLatin1());
        request.setRawHeader("Content-Length", QString(data.size()).toLatin1());
    
        QNetworkAccessManager * manager = new QNetworkAccessManager(this);
        QNetworkReply * reply =  manager->post(request, data);
        QEventLoop wait;
    
        connect(manager, SIGNAL(finished(QNetworkReply*)), &wait, SLOT(quit()));
        connect(manager, SIGNAL(finished(QNetworkReply*)), manager, SLOT(deleteLater()));
    
        QTimer::singleShot(10000, &wait, SLOT(quit()));
        wait.exec();
    
        QByteArray answer = reply->readAll();
        reply->deleteLater();
    
        qDebug() << answer;
    

    2

    QString uploadUrl = "https://graph.facebook.com/me/photos?access_token=" +
                            accessToken;
    
        QString photoPath = QCoreApplication::applicationDirPath() + "/image_example.png";
        
        QFileInfo fileInfo(photoPath);
        QFile file(photoPath);
    
        QPixmap pixmap;
        pixmap.load(photoPath);
        QByteArray data;
    
        QBuffer buffer(&data);
        buffer.open(QIODevice::ReadWrite);
        pixmap.save(&buffer, "png");
        buffer.close();
    
        QHttpMultiPart * multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
        QHttpPart imagePart;
        imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/png"));
    
        imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"source\"; filename=\""+ file.fileName()));
        imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"message\""));
    
        imagePart.setBody(data);
        multiPart->append(imagePart);
    
        QNetworkAccessManager * manager = new QNetworkAccessManager(this);
        QNetworkReply * reply =  manager->post(request, multiPart);
        QEventLoop wait;
    
        connect(manager, SIGNAL(finished(QNetworkReply*)), &wait, SLOT(quit()));
        connect(manager, SIGNAL(finished(QNetworkReply*)), manager, SLOT(deleteLater()));
    
        QTimer::singleShot(10000, &wait, SLOT(quit()));
        wait.exec();
    
        QByteArray answer = reply->readAll();
        reply->deleteLater();
    
        qDebug() << answer;
    
    1 Reply Last reply
    0

    1/1

    6 Mar 2016, 01:19

    • Login

    • Login or register to search.
    1 out of 1
    • First post
      1/1
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved