crossplatform.ru

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

Nick5
  опции профиля:
сообщение 22.2.2012, 15:59
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 22.2.2012
Пользователь №: 3233

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




Репутация:   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 написать, чтобы получить новое имя отправленного файла.
Чувствую, что должно быть просто, но не пойму, как...

Очень рассчитываю на вашу помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Dimix
  опции профиля:
сообщение 7.3.2012, 21:08
Сообщение #2


Студент
*

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

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




Репутация:   0  


Может я не все внимательно прочитал но в QT есть прекрасный класс для работы с FTP => QFtp
QFtp *ftp = new QFtp;
ftp->connectToHost("host");
ftp->login("login", "password");
ftp->put(local_file, remote_file, QFtp::Binary);
ftp->close();


И кстате передаваемые $_GET QNetworkRequest r(QUrl("http://ХХХХХХХХХХХХХХХХ.php?"+"p=upload")); удобнее писать так
QUrl url = QUrl("http://ХХХХХХХХХХХХХХХХ.php");
url.addQueryItem("p", "upload");


Сообщение отредактировал Dimix - 7.3.2012, 21:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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


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