Отправка изображения на php curl

M9
На сайте с 15.05.2014
Offline
79
287

Пытаюсь высылать image из своего сервера в другой вот код:

$ch = curl_init();

$file = new \CURLFile(__DIR__.'/bot.jpg'); //<-- Path could be relative
$data = array('imgfile' => $file);
curl_setopt($ch, CURLOPT_URL, 'https://s.taobao.com/image');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

$headers = array();
$headers[] = 'Authority: s.taobao.com';
$headers[] = 'Accept: application/json, text/javascript, */*; q=0.01';
$headers[] = 'X-Requested-With: XMLHttpRequest';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36';
$headers[] = 'Content-Type: multipart/form-data; jpg';
$headers[] = 'Origin: https://s.taobao.com';
$headers[] = 'Sec-Fetch-Site: same-origin';
$headers[] = 'Sec-Fetch-Mode: cors';
$headers[] = 'Sec-Fetch-Dest: empty';
$headers[] = 'Referer: https://s.taobao.com/';
$headers[] = 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6,zh;q=0.5';
$headers[] = 'Cookie: cna=sq+XFgcFomICAdkILrTzM+gQ; _fbp=fb.1.1578156478282.1390644883; lgc=user; tracknick=user; tg=0; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0; hng=CN%7Czh-CN%7CCNY%7C156; thw=cn; UM_distinctid=17054bd2899233-0a44952e86f84b-313f69-144000-17054bd289a149; enc=o2QQU5u%2F5VXkA8yxxoB3ox7q1GryFkv7b9IHXktINzjURheZbYAoqMOqXAMnRN4umZymGxqq7szUj7xwzDcfyQ%3D%3D; t=60ed803146c0e0cc56b1643531a58b45; cookie2=79d6aca56467e226137b8d7fe92cee76; v=0; _tb_token_=38bdd37de6ba3; _samesite_flag_=true; sgcookie=E7hr8B9xSxPqPRnr8WUWD; unb=2994810303; uc3=nk2=F5fWbzZ6Js6a%2BcQ%3D&lg2=WqG3DMC9VAQiUQ%3D%3D&id2=UUGrctoejhARaw%3D%3D&vt3=F8dBxGR%2BPp22lENnygY%3D; csg=43eb07bb; cookie17=UUGrctoejhARaw%3D%3D; dnk=user; skt=db2cdf2c420b14af; existShop=MTU4ODMzNDU2Mg%3D%3D; uc4=nk4=0%40FY0ZWXqQ92XXc6HIKgvSO6C3uDtOQA%3D%3D&id4=0%40U2OcQgSH%2B%2B%2Bane%2BUtWmO3yflg%2BFK; _cc_=URm48syIZQ%3D%3D; _l_g_=Ug%3D%3D; sg=j3a; _nk_=user; cookie1=U7fyz%2FneK5hDgcYFOvfZCvIQ9QWlTYjadL4GLZJGnSU%3D; mt=ci=5_1; _m_h5_tk=0404e8a5c0bca2d88437b1eed88b3ac6_1588342304571; _m_h5_tk_enc=e9157c8f5c15a4fae3bec707be0871c0; tfstk=czBVBji9m-e4dJwR9KpwceeZObOACb8MRY-ei6zDUn_uh7Nw8i5D3VKkJttybeeki; uc1=cookie14=UoTUMtMUEF2vhQ%3D%3D&cookie16=U%2BGCWk%2F74Mx5tgzv3dWpnhjPaQ%3D%3D&cookie15=UIHiLt3xD8xYTw%3D%3D&cookie21=URm48syIYn73&cart_m=0&pas=0&existShop=false; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; l=eBOl0hIuQyJfnJWvBOfZlurza77tpIRXXuPzaNbMiT5P_YCH5sa1WZjd6FYMCnHNHsI6R3Jn1-hgBkYRbyCq6NEUE3k_J_2s3dC..; isg=BDw8Sd5kTmM2v3riwDoWHwYcDdruNeBfwA_Lyxa9ficK4d1rPkEg7_4HwBGZ4hi3';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
print_r($result);

видимо делаю не правильно раз получаю:

{"status":0,"error":true,"errorCode":"507","errorMsg":"只支持jpg或png格式的图片","extraInfo":"请更换图片后重试"}
как мне отправить изображения на другой сервер из свой?
LEOnidUKG
На сайте с 25.11.2006
Offline
1587
#1

А картинку которую вы отправляете, точно рабочая, без лишней информации?

т.е. внутри там точно JPG?

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
SocFishing
На сайте с 26.09.2013
Offline
118
#2

Может следует задать тип файлу

$file = new \CURLFile(__DIR__.'/bot.jpg', 'image/jpeg', rand().'.jpg');

ну и если второй скрин это с ручной загрузки, то там boundary скорее всего. Детальный пример https://www.php.net/manual/en/class.curlfile.php

$headers[] ="'Content-Type: multipart/form-data; boundary={$boundary}";

=========

В ручном режиме ссылка для загрузки совпадает и точное наличие файла __DIR__.'/bot.jpg' ? Так сложно сказать без доступа к taobao как конкретно к ним лить.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
M9
На сайте с 15.05.2014
Offline
79
#3
LEOnidUKG:
А картинку которую вы отправляете, точно рабочая, без лишней информации?
т.е. внутри там точно JPG?

Да, отправил в ручную работает.

---------- Добавлено 01.05.2020 в 22:26 ----------

SocFishing:
Может следует задать тип файлу

$file = new \CURLFile(__DIR__.'/bot.jpg', 'image/jpeg', rand().'.jpg');

ну и если второй скрин это с ручной загрузки, то там boundary скорее всего. Детальный пример https://www.php.net/manual/en/class.curlfile.php

$headers[] ="'Content-Type: multipart/form-data; boundary={$boundary}";

=========

В ручном режиме ссылка для загрузки совпадает и точное наличие файла __DIR__.'/bot.jpg' ? Так сложно сказать без доступа к taobao как конкретно к ним лить.

Благодарю сенсей, вы гений, такой подход:

$file = new \CURLFile(__DIR__.'/bot.jpg', 'image/jpeg', rand().'.jpg');

работает:

{"status":1,"name":"O1CN01nCVL0Y1Pv9uob2BH9_!!0-imgsearch.jpg","url":"//g-search3.alicdn.com/img/bao/uploaded/i4/O1CN01nCVL0Y1Pv9uob2BH9_!!0-imgsearch.jpg","error":false}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий