Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу разобраться как работать с C++ как CGI 
:(
    Опции темы
Empirik
Дата 8.2.2006, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

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



Уважаемые форумчане мы так и не ответили на один важный вопрос: как же всетаки обрабатывать multipart данные пришедшие от формы
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
Ignat
Дата 8.2.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата(Empirik @ 8.2.2006, 11:02 Найти цитируемый пост)

Уважаемые форумчане мы так и не ответили на один важный вопрос: как же всетаки обрабатывать multipart данные пришедшие от формы

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

[offtop]
Цитата

Оставь надежду всяк сюда входящий,

Empirik, интересная подпись, помнится видел такую над входом в одну из Чусовских пещер.
[/offtop]


--------------------
Теперь при чем :P
PM   Вверх
Empirik
Дата 9.2.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

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



В общем если кому то еще интересно, то вот пример
Код


#ifdef WIN32
#include "stdafx.h"
#endif


#ifndef WIN32
#include <iostream>  
#endif
#include <stdio.h>

using namespace std;
#ifdef WIN32
int _tmain(int argc, _TCHAR* argv[])
#endif
#ifndef WIN32
int main(int argc, char* argv[])
#endif
{
    cout<<"Content-type: text/html\n\n";
    cout<<"<html>\n\t<body>\n";
    cout<<"\t\t<form name=\"main\" method=\"post\" enctype=\"multipart/form-data\">\n";
    cout<<"\t\t\t <input type=\"FILE\" name=\"IMAGE\"/><br/>\n";
    cout<<"\t\t\t <input type=\"FILE\" name=\"IMAGE\"/><br/>\n";
    cout<<"\t\t\t <input type=\"hidden\" name=\"test\" value=\"test1\"/><br/>\n";
    cout<<"\t\t\t <input type=\"submit\" name=\"ok\" value=\"Принять\"/>\n";
    cout<<"\t\t</form>\n\t\t<br/>\n";
    cout<<" метод запроса "<<getenv("REQUEST_METHOD")<<"<br/>";
    cout<<" метод запроса POST "<<(getenv("REQUEST_METHOD")=="POST")<<"<br/>\n";
    string method=getenv("REQUEST_METHOD");
    string post="POST";
    int test=method.compare(post);
    cout<<" метод запроса POST другой спсоб "<<test<<"<br/>\n";
    cout<<"<pre>\n";
    if(method.compare(post)==0)
    {
        cout<<"длинна запроса "<<getenv("CONTENT_LENGTH")<<"\n";
        char* buf=new char[atoi(getenv("CONTENT_LENGTH"))];
        memset(buf,1,atoi(getenv("CONTENT_LENGTH")));
        size_t i=0;
        size_t size=atoi(getenv("CONTENT_LENGTH"));
        fread(buf,size,1,stdin);
        cout<<"\nНачал цикл\n";
        cout<<strlen(buf);
        cout.flush();
        while(i<size)
        {
            cout.write(&buf[i],1);
            i++;
            cout.flush();
        }
        delete buf;
    }
    cout<<"\t\t</pre>";
    cout<<"\t</body>\n";
    cout<<"</html>\n";
    return 0;
}

Все данные поланные при POST запросе перенаправлюятся во входной поток программы. PS. У меня Apache 2 под виндой, этот кад не работает, не выдает тест файлов. Этот же код откомпелированный под SUSE Linux 10 работает на ура.
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
Basil777
Дата 24.2.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.2.2006

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



А как второй файл обрабатывается?
PM MAIL   Вверх
Voronin_Igor
Дата 7.11.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сам начал писать CGI на С++ не так все и сложно, вот только материалу по этой теме очень мало что касается работы со строками то стандартный с++ а вот с передачей файлов изображений то пока для меня это проблема которую решаю.
 
Цитата(azesmcar @  7.2.2006,  11:57 Найти цитируемый пост)
CGI на C/C++ ничем не отличается от программирования на Perl

да также как украинский и русский или С++ и Java мне кажется если бы был бы топик CGI c разделами C++ и Perl было бы удобней, но это моё личное мнение. 
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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