CURL POST заявка, съставнасъдържание (многочаст

Тогава нашият код, който емулира изпращане на данни, ще бъде както следва:
Но какво ще стане, ако трябва да изпратим не само текста от формата, но и файла? За да направите това, въвеждаме пътя до файла, който ще бъде изпратен в клетката на масива, и поставяме знака „@“ пред него. Този знак е директива за CURL, че това е пътят до файла и съответно го прехвърля към посочения ресурс. Нашият код ще изглежда така:
Всичко изглежда наред, но проблемът е, че сами формираме този файл в паметта или го вземаме отнякъде. В този случай не винаги е удобно да запишете файла на диск, така че CURL да го изпрати с POST заявка до отдалечен ресурс. Как да бъде тогава? За да разрешим този проблем, ще формираме заявката "ръчно", като сами формираме тялото и заглавието.
За удобство нека първо напишем клас контейнер, който ще съдържа съдържанието на файла и неговите параметри:
Този клас е необходим, така че в масива за POST заявката да е възможно да се идентифицират елементите, съдържащи файла. След това ще напишем общ клас, който формира "multipart/form-data" след RFC7478:
Този клас ще обработи масив с елементи на формуляр и ако класът oFile бъде открит сред елементите на масива, той ще формира тялото на POST заявката, като вземе предвид изискванията за многостранни/формулярни данни за съставния тип съдържание.
Сега нашата програма ще изглежда така:
Ето как можем да изпълним задачата си, заобикаляйки допълнителната връзка за записване на диск. Това ще спести памет, време и ресурси.