Не могу загрузить файл через curl - PullRequest
2 голосов
/ 13 октября 2019

Попытка собрать 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, но до сих пор не удалось. Есть мысли?

1 Ответ

0 голосов
/ 13 октября 2019

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

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

А в моем $body_message граница была на 2 тире короткой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...