2 votes

Impossible de télécharger un fichier via curl

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 ?

0voto

user11222393 Points 166

Il y a eu une erreur stupide, mais il a fallu du temps pour s'en rendre compte. Si quelqu'un se retrouve avec une erreur comme la mienne : les limites dans l'en-tête et le corps de la requête sont de longueur différente.

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

Et dans mon $body_message la frontière était à 2 tirets près

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X