crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в загрузка картинки на сайт методом пост multipart/form-data
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ufna Дата 17.10.2010, 12:36
 
Цитата(eldar85 @ 17.10.2010, 0:39) *
и к стати отличный сайт у тебя и главное родственная душа, я тоже фрилансер)) freedom forever)))


пасиб ;)
eldar85 Дата 16.10.2010, 23:39
  и к стати отличный сайт у тебя и главное родственная душа, я тоже фрилансер)) freedom forever)))
eldar85 Дата 16.10.2010, 22:54
 
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;


вот в таком виде все работает отлично)) спасибо за помощь)
eldar85 Дата 16.10.2010, 22:16
  спасибо, сейчас попробую))
ufna Дата 16.10.2010, 21:57
  file кстати тоже не задаешь. Сделай как у меня - это проверенный вариант
ufna Дата 16.10.2010, 21:23
  ну ты key неверно задаешь

сделай как в моем примере, поставь key вместо моего __PARAM_NAME__, а его значение - вместо "__your PARAM_NAME data in TEXT__"
eldar85 Дата 16.10.2010, 20:40
  хмм, вроде все ясно но не выходит, мне нужно сформировать подобного вида отправляемый бинарник

    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);


это отправка курлом, мне нужно сделать подобное методами Qt.
Сделал вот так

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();


но отправка получается неправельной.
ufna Дата 16.10.2010, 13:04
  В принципе, все очень просто - http://ufna.ru/2010/10/16/qt-post-multipart-form-data
kwisp Дата 16.10.2010, 11:06
 
Цитата(eldar85 @ 16.10.2010, 10:55) *
как получиться выложу код)

обязательно, лучше с подробными комментариями.
eldar85 Дата 16.10.2010, 9:55
  http://www.qtcentre.org/archive/index.php/t-25255.html
тут вроде китаец привел не плохой пример, буду разбираться, теперь хоть ясно в какую сторону копать, а то почти везде используется QHTTP а я хочу с помощью QNetworkAсcessManager все сделать)) как получиться выложу код)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.9.2021, 1:47