J'essaie de construire un outil php de chargement automatique d'images avec curl. Avec d'autres téléchargements comme le texte, je n'ai eu aucun problème. Mais quand il s'agit de télécharger des images, je suis coincé. J'ai examiné d'autres problèmes similaires ici sur SO, mais je n'ai rien trouvé qui puisse m'aider.
Avec l'outil de développement de Firefox, j'ai constaté que les en-têtes envoyés sont :
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
Et demande de corps :
-----------------------------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--
J'ai essayé de reproduire la demande avec CURL
Envoi des en-têtes tels qu'ils sont ci-dessus. Corps de la requête :
$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--';
Options de boucles :
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => 1,
CURLINFO_HEADER_OUT => true,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $body_message
Mais je reçois toujours une erreur JSON personnalisée 'No images selected'
;
J'ai essayé diverses modifications avec $body_message
J'ai essayé un peu avec Curlfile, mais toujours pas de succès. Une idée ?