crossplatform.ru

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

> QHttp посылка файла., Нужно чтобы при нажатии кнопки посылался файл на удаленный вебсервер.
edwardoid
  опции профиля:
сообщение 31.12.2008, 19:52
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


При получении сигнала clicked() мой обработчик должен послать файл именно через HTTP, а не FTP на удаленный вебсервер, Apache+PHP.
Думал чтобы методом POST посылать файл upload.php, который собственно будет там обрабатывать, то бишь сортировать по папкам. php часть написал, все работает, но файл послать не могу.
Сколько искал в интернете про заголовки - не помогло, даже использовал плагин к файрфоксу показывающий какой запрос был отправлен, использовал этот же запрос - не помогло. Помогите. Очень надо.
Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 15)
fsMark
  опции профиля:
сообщение 1.1.2009, 17:03
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

Спасибо сказали: 10 раз(а)




Репутация:   1  


Покажи код, как посылаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 1.1.2009, 17:09
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


    QString fileName = QFileDialog::getOpenFileName(this,tr("OpenFile"),"",tr("All Files (*);;Text Files (*.txt)"));
    if (!fileName.isEmpty())
    QFileInfo path(fileName);
    QString fileName1 = path.fileName();
    QFile *userfile = new QFile(fileName);
    QHttp *http;
    if ( !userfile->open(QIODevice::ReadOnly) )
    {
    QMessageBox::information(this, tr("HTTP"),
    tr("Unable to open the file %1: %2.")
    .arg(openFilesPath).arg(userfile->errorString()));
    }

    QHttpRequestHeader header("POST", "/upload.php", 1, 1);
    header.setValue("Host", "foliant");
    header.setValue("Content-type", "multipart/form-data, boundary=AaB03x");
    header.setValue("Cache-Control", "no-cache");
    header.setValue("Accept","*/*");

    QByteArray byt(openFilesPath.toUtf8());
    QByteArray bytes;
    bytes.append("--AaB03x\r\n");
    bytes.append("content-disposition: ");
    bytes.append("form-data; name=\"agency\"\r\n");
    bytes.append("\r\n");
    bytes.append("0\r\n");
    bytes.append("--AaB03x\r\n");
    bytes.append("content-disposition: ");
    bytes.append("form-data; name=\"userfile\"; filename=\"" + byt+ "\"\r\n");
    bytes.append("Content-Transfer-Encoding: binary\r\n");
    bytes.append("\r\n");
    bytes.append(userfile->readAll());
    userfile->close(); // the file is opened earlier in the code
    bytes.append("\r\n");
    bytes.append("--AaB03x--");
    int contentLength = bytes.length();
    header.setContentLength(contentLength);

    http->setHost("foliant");
    //fileName = QFileDialog::getOpenFileName(this,tr("OpenFile"),"",tr("All Files (*);;Text Files (*.txt)"));
    http->request(header, bytes);


Вот так, причем даже этот отрывок из сети стырил, они там говорят работает а у мну нет, тестирую на домашнем вебсервере.
Причина редактирования: используй тэг cod с параметром (cod=cpp)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 10.1.2009, 23:35
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А ты можещь посмотреть, что от тебя уходит, что получает сервер и что ему не нравится?
Думаю тм все и решится, а судя по коду, вроде все верно, если только с mime ничего не напутанно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 10.1.2009, 23:56
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


mmm a kak posmotret? Server polnostyu moy mogu vse chto ugodno stavit.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 11.1.2009, 0:22
Сообщение #6


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(edwardoid @ 10.1.2009, 23:56) *
mmm a kak posmotret? Server polnostyu moy mogu vse chto ugodno stavit.

оф-топ. что за мода пошла транслитом писать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 11.1.2009, 0:25
Сообщение #7


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


A kto ego znaet!? :unknown:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 11.1.2009, 0:33
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Просто к слову. Я заметил, что код с этим boundry ходит уже давно по различным форумам Qt.
AaB03x


Как один человек его придумал, так все его и используют даже не меняя :)

Кстати все это

    bytes.append("--AaB03x\r\n");
    bytes.append("content-disposition: ");
    bytes.append("form-data; name=\"agency\"\r\n");
    bytes.append("\r\n");
    bytes.append("0\r\n");
    bytes.append("--AaB03x\r\n");
    bytes.append("content-disposition: ");


Легко переписывается в это

    bytes.append("--AaB03x\r\n"
    "content-disposition: "
    "form-data; name=\"agency\"\r\n\r\n0\r\n"
    "--AaB03x\r\n"
    "content-disposition: ");


Ну или вообще в одну строку, если эстетика не нужна. Разницы не будет.

Сообщение отредактировал SABROG - 11.1.2009, 0:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 11.1.2009, 9:14
Сообщение #9


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


А какая разница? Только в форме записи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 11.1.2009, 9:44
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(edwardoid @ 10.1.2009, 23:56) *
mmm a kak posmotret? Server polnostyu moy mogu vse chto ugodno stavit.
Существуют разные утилиты, для отлова своего сетевого трафа, как на вход так и на выход. Вот с помощью них и можно посмотреть.
Я давно их уже не пользовал, потому уже не помню названия...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.1.2009, 11:48
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 11.1.2009, 12:44) *
Существуют разные утилиты, для отлова своего сетевого трафа,
их обычно сниферами называют. edwardoid, вот тебе ключевое слово для поиска по интернету.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 11.1.2009, 12:43
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 11.1.2009, 13:06
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(molchanoviv @ 11.1.2009, 9:14) *
А какая разница? Только в форме записи.


Ну вообще-то разница в том, что конкатенация строк в первом случае происходит динамически, в то время как в моем на этапе компиляции. Конечно для такой функции как передача файла этот выйгрыш в скорости и памяти не значительный, а вот как стиль программирования, то я бы сказал, что это плохой тон :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 11.1.2009, 13:34
Сообщение #14


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


а установка сервера и результат посылки запроса ПОСТ???
удачно или нет???
сигналы requestFinished(int,bool) что присылают?

к сожалению такая программка как ethereal под виндой не видит локальный трафик, я ей пользуюсь очень удобно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 11.1.2009, 14:02
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(kwisp @ 11.1.2009, 13:34) *
а установка сервера и результат посылки запроса ПОСТ???
удачно или нет???
сигналы requestFinished(int,bool) что присылают?

к сожалению такая программка как ethereal под виндой не видит локальный трафик, я ей пользуюсь очень удобно.


Похоже это относится вообще к снифферам на винде. Юзай другую ОС если есть такая возможность.

Цитата
Q-13: Does WinPcap support the loopback device?

A: No. Only physical interfaces are supported. This is a limitation of Windows and not of WinPcap.


Вот тут еще глянь - http://www.codinghorror.com/blog/archives/000590.html

Сообщение отредактировал SABROG - 11.1.2009, 14:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 30.1.2009, 1:15
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообщем с сервером контактирует, даже название файла правильно передает, вся проблема в том, что сам файл не доходит до сервера. В чем проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 1.6.2025, 9:29