На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Отсылка данных через веб-форму методом POST , Файлы и текстовые данные с помощью WinInet
    Мне нужно отправить данные на веб-сервер одновременно текстовые и несколько файлов, у каждого поля формы есть идентификатор, который мне известен. Если с обычными текстовыми данными мне все ясно, то с файлами не так все очевидно. Видел пример в суппорте Майкрософта по отсылке файла, но не понял как в одном запросе вместе с файлом переслать и текстовые данные. Кроме того, если нужно закачать несколько файлов, то где мне указать идентификатор поля ввода, которому соответствует файл? Приведите кусочек кода, или пните в нужную сторону, или просто опишите кратко последовательность вызова функций и примерно опишите параметры.

    Пример из суппорта Майкрософта по отсылке одного файла:
    ExpandedWrap disabled
      BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile)
         {
           INTERNET_BUFFERS BufferIn = {0};
           DWORD dwBytesRead;
           DWORD dwBytesWritten;
           BYTE pBuffer[1024]; // Read from file in 1K chunks
           BOOL bRead, bRet;
       
           BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
       
           HINTERNET hRequest = HttpOpenRequest (hConnect, "PUT",
               "/test/page.htm", NULL, NULL, NULL,  0, 0);
           if (!hRequest)
           {
             printf("Failed to open request handle: %lu\n", GetLastError ());
             return FALSE;
           }
       
           HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,
               NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
           if (hFile == INVALID_HANDLE_VALUE)
           {
             printf("\nFailed to open local file %s.", upFile);
             return FALSE;
           }
       
           BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);
           printf ("File size is %d\n", BufferIn.dwBufferTotal );
       
           if(!HttpSendRequestEx( hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
           {
             printf( "Error on HttpSendRequestEx %lu\n",GetLastError() );
             return FALSE;
           }
       
           DWORD sum = 0;
           do
           {
             if  (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),
                 &dwBytesRead, NULL)))
             {
               printf ("\nReadFile failed on buffer %lu.",GetLastError());
               break;
             }
             if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,
                 &dwBytesWritten)))
             {
               printf ("\nInternetWriteFile failed %lu", GetLastError());
               break;
             }
             sum += dwBytesWritten;
           }
           while (dwBytesRead == sizeof(pBuffer)) ;
       
           CloseHandle (hFile);
           printf ("Actual written bytes: %d\n", sum);
       
           if(!HttpEndRequest(hRequest, NULL, 0, 0))
           {
             printf( "Error on HttpEndRequest %lu \n", GetLastError());
             return FALSE;
           }
           return TRUE;
         }
      Ну на сколько я понимаю это, закачку файла должен осуществлять сам сервер, т.е. ты ему передаешь только путь к файлу, ну а там какой то скрипт делает всю грязь.
      Либо изначально считав файл присваеваешь его какой нить переменой в запросе т.е.

      fname=text.txt&text=sdfgsdfg sdfg dsfg dsfg dsfgsdfg sdfg sdfg dsfg dsfg sdfg dsfg dsfg dfsgdfs gdfg
      ну а не сервере какой то скрипт доложен создать файл с именем text.txt и записать туда данные из переменной text
      если поможет как формировать пост запрос вот пара ссылок
      вот
      вот
        Nahel, не, не так все просто. Решил заюзать библиотечку, чтобы не париться самому: CHttpClient
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0328 ]   [ 16 queries used ]   [ Generated: 6.05.24, 14:31 GMT ]