бдительный Я видел, что некоторые люди спрашивали, но обычно о CURL, я спрашиваю об отправке через WinSock2.
Хорошо, я знаю, как довольно легко создавать операторы POST и GET (POST с Application / application / x-www-form-urlencoded), но я не уверен, как использовать multipart / form-data, я знаю, что у него есть, чем заняться с границей, чтобы указать, когда вы закончите отправку данных.
Но как должен выглядеть базовый HTTP POST для загрузки файлов? (Также вы можете загрузить в PHP POSTBACK? Если бы это было application / x-www-form-urlencoded, я мог бы увидеть что-то вроде filename = hello.png&данные = …)
Примерно такой формат: (Это все, что я знаю об отправке данных). Я не могу найти надежный пример в Интернете, поэтому я задаю вопрос.
POST /postback.php HTTP/1.1
HOST: www.website.com
Content-Type: multipart/form-data; boundary=----IAmABoundary
Content-Length: 300
------IAmABoundary
Send Binary Data?
------IAmABoundary--
Используйте Fiddler для захвата загрузки файла, тогда вы сможете увидеть фактический формат, ваш пример, более или менее правильный, насколько я помню. Вот гораздо более полный ответ с хорошим примером: Пример multipart / form-data
HTTP-сообщения — это сообщения MIME. На самом деле это довольно сложный формат кодирования.
Начните с чтения RFC 2045. Это базовая спецификация для MIME.
Затем перейдите к RFC 2046. В разделе 5 RFC 2046 изложена спецификация для multipart
MIME-сообщения, которые используются для multipart/form-data
формат вы видите.
Это много материала, чтобы прочитать, правда. Но необходимо полностью понимать сообщения в формате MIME, чтобы иметь хоть какую-то надежду понять, как работают загрузки файлов.
если вы хотите отправлять содержимое файла на самом деле, вы можете просто поместить содержимое файла после заголовков HTTP и установить тип содержимого и длину содержимого
multipart / form-data используется html-формой для публикации / отправки формы, в которой есть файл в своем поле, они разделяют части / поля, используя границы из нескольких частей