![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Nick5 |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 22.2.2012 Пользователь №: 3233 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Друзья,
сразу скажу, что я новичок в программировании, но надо срочно разобраться с одним вопросом. Прошу вашей помощи. Есть код, который отправляет файл на сервер: if (attachmentFileName != "") { fileInfo.setFile(attachmentFileName); QString bound="---------------------------123"; QByteArray data(QString("--"+bound+"\r\n").toAscii()); data += "Content-Disposition: form-data; name=\"action\"\r\n\r\n"; data += "\r\n"; data += QString("--" + bound + "\r\n").toAscii(); data += "Content-Disposition: form-data; name=\"file\"; filename=\""+fileInfo.fileName()+"\"\r\n"; data += "Content-Type: image/"+fileInfo.suffix().toLower()+"\r\n\r\n"; QFile file(fileInfo.absoluteFilePath()); file.open(QIODevice::ReadOnly); data += file.readAll(); data += "\r\n"; data += QString("--" + bound + "\r\n").toAscii(); data += QString("--" + bound + "\r\n").toAscii(); data += "Content-Disposition: form-data; name=\"desc\"\r\n\r\n"; data += "\r\n"; QNetworkRequest r(QUrl("http://ХХХХХХХХХХХХХХХХ.php?"+"p=upload")); r.setRawHeader(QString("Content-Type").toAscii(),QString("multipart/form-data; boundary=" + bound).toAscii()); r.setRawHeader(QString("Content-Length").toAscii(), QString::number(data.length()).toAscii()); manager->post(r, data); attachmentFileName.clear(); } на что сервер дает ответ в XML такой: ..... здесь происходит обработка имени файла, а именно переименование, и потом перемещение: ..... move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $fn); //echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; $messageUploadXml = $messageXml->addChild('upload', "upload/" . $fn); ..... Так вот в итоге вопрос: какую мне строчку в Qt написать, чтобы получить новое имя отправленного файла. Чувствую, что должно быть просто, но не пойму, как... Очень рассчитываю на вашу помощь. |
|
|
![]() |
ernie |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Начнём с того ,что я бы сначала засунул xml которая приходит от сервера в QDomDocument:
QDomDocument doc; doc.setContent(тут ответ от сервера в QByteArray или QString); А потом бы там уже искал: QDomNodeList list = doc. elementsByTagName("upload"); //тут получили лист элементов upload,как я понимаю,он у вас один в xml'ке,значит дальше можно так сделать: QDomNode node = list.item(0); а таперь попробовать можно и значение получить: QString uploadFileName = node.nodeValue(); Вот как - то так,надо пробовать и смотреть ,я могу ошибаться И кстати да,вам же еще ответ надо от сервера получить,для этого в ваш код надо добавить: connect(manager,finished ( QNetworkReply * ),this,ващ слот для обработки ответа(QNetworkReply * )); Скажем слот назовём handleReply,Значит примерно такой код будет: void вашкласс::handleReply(QNetworkReply *reply) { QByteArray content = reply->readAll(); //тут код,который я писал выше } |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 14.6.2025, 12:04 |