WinInet + multipart/form-data

Тема в разделе "WASM.NETWORKS", создана пользователем slesh, 31 янв 2012.

  1. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    Собственно вопрос: Можно ли особо не извращаясь организовать отправку multipart/form-data формы. Содержащей несколько файлов и переменных, при этом не загружая всё в память?


    Т.е. ситуация такая:
    1) На входе есть массив полей формы
    - имя
    - значение
    - тип
    - размер

    2) последовательность может быть совершенно разная. Может идти 2 текстовых поля, а потом подряд 2 файла.
    3) Загонять всё сразу в память не получится, по причине того, что файл слишком большого размера может быть
    4) одновременно может посылаться несколько файлов.

    Если для каждого поля вызывать HttpSendRequestExA то не катит, всё равно передается вдобавок сам заголовок.
    Если сделать HttpSendRequestExA, а затем отправить данные через InternetWriteFile. ТО выходит что потребуется:
    - вычислить заранее размер всех данных, включая разделители
    - слать данные и попутно вставляя нужные куски запроса.

    Может быть более удобный способ. К примеру манипуляции с INTERNET_BUFFERS.Next
    Главное чтобы реализация была через WinInet

    P.S. Пробовал делать так:
    1) HttpSendRequestExA с пустым буфером
    2) отправлять все данные через InternetWriteFile

    но получается так что в запросе светится что Content-Length: 0
    Что по-видимому не очень хорошо
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Имхо только так. Но неужели это так сложно?