При получении сигнала clicked() мой обработчик должен послать файл именно через HTTP, а не FTP на удаленный вебсервер, Apache+PHP.
Думал чтобы методом POST посылать файл upload.php, который собственно будет там обрабатывать, то бишь сортировать по папкам. php часть написал, все работает, но файл послать не могу.
Сколько искал в интернете про заголовки - не помогло, даже использовал плагин к файрфоксу показывающий какой запрос был отправлен, использовал этот же запрос - не помогло. Помогите. Очень надо.
Заранее спасибо.
Покажи код, как посылаешь?
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);
А ты можещь посмотреть, что от тебя уходит, что получает сервер и что ему не нравится?
Думаю тм все и решится, а судя по коду, вроде все верно, если только с mime ничего не напутанно...
mmm a kak posmotret? Server polnostyu moy mogu vse chto ugodno stavit.
A kto ego znaet!?
Просто к слову. Я заметил, что код с этим 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: ");
А какая разница? Только в форме записи.
спасибо
а установка сервера и результат посылки запроса ПОСТ???
удачно или нет???
сигналы requestFinished(int,bool) что присылают?
к сожалению такая программка как ethereal под виндой не видит локальный трафик, я ей пользуюсь очень удобно.
Вообщем с сервером контактирует, даже название файла правильно передает, вся проблема в том, что сам файл не доходит до сервера. В чем проблема?
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)