Zakładając, że na stronie jest taki formularz:
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="text1" /><!-- Wpisujemy "TEST1" --> <input type="text" name="text2" /><!-- Wpisujemy "TEST2" -->
<input type="file" name="file1" /><!-- Wpisujemy "TEST3.txt" --> <input type="file" name="file2" /><!-- Wpisujemy "TEST4.jpg" -->
<input type="submit" value="Ślij" />
do serwera zostaną wysłane najprawdopodobniej takie dane:
Kod
Content-Type: multipart/form-data; boundary=----------aabbccddee
Content-Length: 12345
----------aabbccddee
Content-Disposition: form-data; name="text1"
TEST1
----------aabbccddee
Content-Disposition: form-data; name="text2"
TEST2
----------aabbccddee
Content-Disposition: form-data; name="file1"; filename="TEST3.txt"
Content-Type: text/plain
Treść pliku TEST3.txt wstawiona bezpośrednio do pliku.
Jeśli będzie kodowana przy użyciu base64_encode() to należy to uwzględnić w nagłówkach pliku
Treść nie może zawierać ciągu boundary: "----------aabbccddee"
Mogą za to być entery;]
----------aabbccddee
Content-Disposition: form-data; name="file2"; filename="TEST4.jpg"
Content-Type: image/jpeg
JPG&^$*^*#
453$%34trgreG34g$#4#%^436$##$34
;34%#$^#$ER::;:$#:$#:$#>$#>;[43;543534?>:#$%:[[?/][43/%>?34
/3
'!!,.'45/43'5/34'5'/43'5/'34//.'34
(...)
;';324@#$%@>#{%
----------aabbccddee
Problem leży pewnie w tym, że nagłówki z
CURLOPT_HTTPHEADER lądują na samej górze (jeszcze przed pierwszym boundary), a ty chcesz je mieć przypisane do konkretnego pliku.
Nie mam zielonego pojęcia jak to zrobić w cURL. Jedyne co mogę doradzić, to użycie jakiegoś skanera pakietów na trasie:
SERWER_Z_CURL <---> SERWER_DO_KTÓREGO_WYSYŁANE_SĄ_PLIKI
I testowanie różnych metod, aż żądanie wysłane przez cURL będzie zbliżone do tego, co podałem na górze.
Jeśli nie wyjdzie, to pozostaje
fsockopen" title="Zobacz w manualu PHP" target="_manual, które z tym zadaniem poradzi sobie na pewno ;]