WinInet + multipart/form-data

Discussion in 'WASM.NETWORKS' started by slesh, Jan 31, 2012.

  1. slesh

    slesh New Member

    Blog Posts:
    0
    Собственно вопрос: Можно ли особо не извращаясь организовать отправку 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

    Blog Posts:
    0
    Имхо только так. Но неужели это так сложно?