Не могу загрузить файл через curl

Попытка создать php-инструмент автозагрузки изображений с помощью curl. С другими загрузками, такими как текст, проблем не было. Но когда дело доходит до загрузки изображений - я застрял. Просмотрел другие подобные проблемы здесь, в SO, но не смог найти ничего, что могло бы помочь.

С помощью инструмента разработчика Firefox я обнаружил, что отправленные заголовки:

Host: www.xxxxxx.com
User-Agent: Mozilla/5.0 
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.xxxxxx.com
Content-Type: multipart/form-data; boundary=---------------------------54682012365
Content-Length: 13645
Origin: https://www.xxxxxx.com
DNT: 1
Connection: keep-alive
Cookie: PHPSESSID=xxxxx;
TE: Trailers

И запрос тела:

-----------------------------54682012365
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

--->THERE GOES SOMETHING I BELIEVE TO BE IMAGETOTEXT(random symbols with few readable parts)<---
-----------------------------54682012365
Content-Disposition: form-data; name="ImId"

0
-----------------------------54682012365--

Пытался воспроизвести запрос с помощью CURL

Отправка заголовков, как указано выше. Запрос тела:

$img = file_get_contents('test.jpg');
$body_message = 
'---------------------------54682012365
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

'.$img.'
---------------------------54682012365
Content-Disposition: form-data; name="ImId"

0
---------------------------54682012365--';

Варианты завитка:

CURLOPT_RETURNTRANSFER => true, 
CURLOPT_HEADER => 1, 
CURLINFO_HEADER_OUT => true, 
CURLOPT_POST => 1, 
CURLOPT_POSTFIELDS => $body_message

Но всегда получайте пользовательскую ошибку JSON 'No images selected';

Пробовал различные модификации с $body_message, немного пробовал с Curlfile, но все равно безуспешно. Есть предположения?


person user11222393    schedule 13.10.2019    source источник


Ответы (1)


Произошла глупая ошибка, но потребовалось некоторое время, чтобы осознать ее. Если кто-то приходит с ошибкой, как у меня: граница в заголовке и теле запроса имеет разную длину

---------------------------54682012365
-----------------------------54682012365

И в моей границе $body_message было 2 тире меньше

person user11222393    schedule 13.10.2019
comment
Вам следует серьезно подумать о том, чтобы что-то вроде Guzzle выполняло ручную работу за вас. - person ceejayoz; 13.10.2019
comment
Не был уверен, что делать с Content-Disposition: form-data; name=ImId' этой части - person user11222393; 15.10.2019