Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача файла на сервер, нужно загрузить файл через POST запрос 
:(
    Опции темы
Rain789
  Дата 31.1.2011, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.1.2011
Где: Казань

Репутация: нет
Всего: нет



Привет всем.

Есть программа (C++, MS VS 2010, MFC AppWizard).
Пользователь выбирает файл с помощью CFileDialog.
Далее пользователь нажимает "Загрузить" и файл должен передаваться php скрипту, который его обрабатывает и загружает, в ответ программа должна получить имя файла, которое ему присвоил php скрипт.
Предполагаю что программа должна отправлять методом POST.

Но как это реализовать? 
Интересует именно самый короткий и быстрый вариант.

Заранее спасибо.
PM MAIL WWW ICQ Skype   Вверх
Dem_max
Дата 1.2.2011, 17:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 1
Всего: 39



Вот класс с примером

разработал AZote(www.izireleaser.ru)


Добавлено
вот выложено по моей просьбе
http://forum.sources.ru/index.php?showtopic=324736

Это сообщение отредактировал(а) Dem_max - 1.2.2011, 17:59

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  azHTTP.rar 4,05 Kb


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Alca
Дата 1.2.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



del

Это сообщение отредактировал(а) Alca - 1.2.2011, 19:26


--------------------
PM WWW ICQ Skype Jabber   Вверх
Rain789
  Дата 1.2.2011, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.1.2011
Где: Казань

Репутация: нет
Всего: нет



Цитата(Dem_max @ 1.2.2011,  17:06)
Вот класс с примером

разработал AZote(www.izireleaser.ru)


Добавлено
вот выложено по моей просьбе
http://forum.sources.ru/index.php?showtopic=324736

Спасибо за класс, попробую его.

Но всё же хотелось бы реализовать просто через сокеты.
Вот так получилось у меня, но где-то ошибка, ибо по идеи он запрос-то отправляет и похоже не правильный, а где ошибка понять не могу(

Код

void CProgDlg::OnBnClickedStartUp()
{
    BOOL answer;

    if( !AfxSocketInit() )
    {
        AfxMessageBox( L"Ошибка инициализации сокета!", MB_OK | MB_ICONSTOP); 
    }

    CSocket MySocket;
    MySocket.Create(0, SOCK_STREAM, NULL);

    if(!MySocket.Connect(L"www.site.ru", 80))
    {
        AfxMessageBox( L"Ошибка соединения!", MB_OK | MB_ICONSTOP); 
    }
    else answer = TRUE;



    CString pBuff = NULL;
    char *send_data = NULL;
    char *pRecv = NULL;
    if(answer)
    {
        char *pBuffer = new char[1024];
        
        CFile myFile(File.GetPathName(),CFile::modeRead|CFile::typeBinary);
        
        pBuff = "POST /index.php HTTP/1.1\r\nHost: www.site.ru\r\n";
        pBuff += "Cookie: income=1\r\n ";
        pBuff += "Content-Type: multipart/form-data; boundary=1BEF0A57BE110FD467A\r\n";
        pBuff += "Content-Length: ";
        char dlina = (300 + myFile.GetLength());
        pBuff += dlina;
        pBuff += "\r\n";
        pBuff += "\r\n--1BEF0A57BE110FD467A\r\n";
        pBuff += "Content-Disposition: form-data; name=\"image_head\"\r\n";
        pBuff += "\r\nimage_head\r\n";
        pBuff += "\r\n--1BEF0A57BE110FD467A\r\n";
        pBuff += "Content-Disposition: attachment; filename=\"image.gif\"\r\n";
        pBuff += "Content-Type: image/gif\r\n";
        pBuff += "Content-Transfer-Encoding: binary\r\n";
        pBuff += "\r\n";

        for( int i=0; i <= myFile.GetLength(); i += 1024)
        {
            myFile.Read(pBuffer, 1024);
            pBuff += pBuffer;
        }

        pBuff += "\r\n--1BEF0A57BE110FD467A--\r\n";

        int e = pBuff.GetLength();

        MySocket.Send(pBuff, e);

        MySocket.Receive(pRecv, 1024, 0);


        myFile.Close();
        delete[] pBuff;
    }
}


Это сообщение отредактировал(а) Rain789 - 2.2.2011, 03:33
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.5101 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.