PDA

View Full Version : upload file in c++



ravandi
3rd April 2017, 12:47
my source can't upload files

#include <QGuiApplication>
#include <QQmlApplicationEngine>

#include <QNetworkAccessManager>
#include <QFile>
#include <string>

#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QLoggingCategory>
#include <QTextStream>

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QHttpMultiPart * data = new QHttpMultiPart();
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHe ader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispos itionHeader, QVariant("multipart/form-data; name=\"image\"; filename=\"1.jpg\""));
imagePart.setRawHeader("Content-Transfer-Encoding","binary");
QFile *file = new QFile("c:\\1.jpg");
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
data->append(imagePart);
QNetworkAccessManager *manager = new QNetworkAccessManager();
QLoggingCategory::setFilterRules("qt.network.ssl.w arning=false");
manager->post(QNetworkRequest(QUrl("http://localhost/qml/get.php")),data);
return app.exec();
}



code php:


<?php
$target = "upload/" . basename( $_FILES['image']['name']);
if(move_uploaded_file($_FILES['image']['tmp_name'], $target))
{
echo $target.'<br/>'."Uploaded";
} else {
echo "not Uploaded";
}
?>

ravandi
4th April 2017, 06:24
The problem was solved:


#include <QGuiApplication>
#include <QQmlApplicationEngine>

#include <QNetworkAccessManager>
#include <QFile>
#include <string>

#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QLoggingCategory>
#include <QTextStream>

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
// add image
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentDispos itionHeader,QVariant("form-data; name=\"image\"; filename=\"1.jpg\""));
imagePart.setHeader(QNetworkRequest::ContentTypeHe ader, QVariant("image/jpeg"));

// open file
QFile *file = new QFile("c:\\1.jpg");
if (!file->open(QIODevice::ReadOnly)) {
qDebug() << "# Could not upload file, could not open file";
return false;
}

// read file and set data into object
QByteArray fileContent(file->readAll());
imagePart.setBody(fileContent);
multiPart->append(imagePart);

// set url
QUrl url("http://localhost/qml/get.php");
QNetworkRequest request(url);

QLoggingCategory::setFilterRules("qt.network.ssl.w arning=false");

// create network manager
QNetworkAccessManager * manager;
manager = new QNetworkAccessManager();

manager->post(request, multiPart);

qDebug() << "# Done sending upload request";

return app.exec();
}

FONQRI
4th April 2017, 06:38
what was the problem ?
explain it please.