никак не пойму как создать массив байтов multipart/form-data чтобы отправить картинку на сайт с помощью qnetworkaccessmanager. Кто нибудь пробывал подобное, нифига не получается.
eldar85,
вот схожие темы
http://www.forum.crossplatform.ru/index.php?showtopic=2502&hl=multipart/form-data
http://www.forum.crossplatform.ru/index.php?showtopic=1905&hl=multipart/form-data
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2 RFC только на английском
http://www.qtcentre.org/archive/index.php/t-25255.html
http://www.qtcentre.org/archive/index.php/t-25255.html
тут вроде китаец привел не плохой пример, буду разбираться, теперь хоть ясно в какую сторону копать, а то почти везде используется QHTTP а я хочу с помощью QNetworkAсcessManager все сделать)) как получиться выложу код)
В принципе, все очень просто - http://ufna.ru/2010/10/16/qt-post-multipart-form-data
хмм, вроде все ясно но не выходит, мне нужно сформировать подобного вида отправляемый бинарник
curl_formadd(&post, &last, CURLFORM_COPYNAME, "method", CURLFORM_COPYCONTENTS, "post", CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "key", CURLFORM_COPYCONTENTS, ackey.c_str(), CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILE, img.c_str(), CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
QByteArray array;
array.append("-----------------------------200242615429510\r\n");
array.append("content-disposition: ");
array.append("method=post");
array.append("\r\n");
array.append("-----------------------------200242615429510\r\n");
array.append("content-disposition: ");
array.append("key=a1683bc4a2768f2c0jhkjhklliui15");
array.append("\r\n");
array.append("-----------------------------200242615429510\r\n");
array.append("Content-Transfer-Encoding: binary\r\n");
array.append("\r\n");
array.append(file.readAll());
array.append("\r\n");
array.append("-----------------------------200242615429510--");
qDebug() << array;
QNetworkAccessManager* pManager = new QNetworkAccessManager();
QNetworkReply *reply = pManager->post(request, array);
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
qDebug() << reply->readAll();
ну ты key неверно задаешь
сделай как в моем примере, поставь key вместо моего __PARAM_NAME__, а его значение - вместо "__your PARAM_NAME data in TEXT__"
file кстати тоже не задаешь. Сделай как у меня - это проверенный вариант
спасибо, сейчас попробую))
QNetworkRequest request;
QEventLoop loop;
QFile file("c:/8788.jpg");
if(!file.open(QIODevice::ReadOnly)) {qDebug() << "error"; return 1;}
request.setRawHeader("Host", "yoursait.com");
request.setUrl(QUrl("http://yoursait.com/in.php"));
request.setRawHeader("Content-Type", "multipart/form-data; boundary=---------------------------200242615429510");
QByteArray array;
array.append("-----------------------------200242615429510\r\n");
array.append("Content-disposition: ");
array.append("form-data; name=\"method\"\r\n");
array.append("\r\n");
array.append("post");
array.append("\r\n");
array.append("-----------------------------200242615429510\r\n");
array.append("Content-disposition: ");
array.append("form-data; name=\"key\"\r\n");
array.append("\r\n");
array.append("a1683bc4jhkjhkhkgutiuftsdrsr62dkiu");
array.append("\r\n");
array.append("-----------------------------200242615429510\r\n");
array.append("-----------------------------200242615429510\r\n");
array.append("Content-disposition: ");
array.append("form-data; name=\"file\"; filename=\"img.jpg\"\r\n");
array.append("Content-Type: image/jpeg");
array.append("\r\n");
array.append("\r\n");
array.append(file.readAll());
array.append("\r\n");
array.append("-----------------------------200242615429510--");
qDebug() << array;
QNetworkAccessManager* pManager = new QNetworkAccessManager();
QNetworkReply *reply = pManager->post(request, array);
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
qDebug() << reply->readAll();
return 0;
и к стати отличный сайт у тебя и главное родственная душа, я тоже фрилансер)) freedom forever)))
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)