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 часть написал, все работает, но файл послать не могу.
Сколько искал в интернете про заголовки - не помогло, даже использовал плагин к файрфоксу показывающий какой запрос был отправлен, использовал этот же запрос - не помогло. Помогите. Очень надо.
Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
edwardoid
  опции профиля:
сообщение 1.1.2009, 17:09
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 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)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 22.12.2024, 15:21