Проблема с добавлением изображения к товару через Shop-Script 5 API
Мне нужно залить более 100 000 изображений к товарам. Импорт csv отработал пару раз по 500 картинок и сломался.
Пытаюсь организовать через Shop-Script 5 API.
Руководствуюсь инструкцией:
http://www.webasyst.ru/developers/docs/api/explorer/shop/shop.product.images.add/
Всякий раз получаю "error":"server_error","error_description":"No file uploaded."
Возможно я плохо понимаю, что добавлять к параметру "file":
Пробовал добавить абсолютный URL файла.
Пробовал загрузить файл на сервер в папку wa-data/public/ и добавлял в запросе относительный путь к файлу (например wa-data/public/123.jpg).
Пробовал добавить file_get_contents('http://somesite.ru/123.jpg')
Пробовал перед отправкой кодировать через base64_encode.
Все та же ошибка. Что делать?
Код примерно такой:
$url = 'http://myshop.ru/api.php/shop.product.add?product_id=100&access_token=...';
$post = 'file='.base64_encode(file_get_contents('http://site.ru/kartinka.jpg'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$output = curl_exec($ch);
curl_close($ch);
var_dump($output);
Пытаюсь организовать через Shop-Script 5 API.
Руководствуюсь инструкцией:
http://www.webasyst.ru/developers/docs/api/explorer/shop/shop.product.images.add/
Всякий раз получаю "error":"server_error","error_description":"No file uploaded."
Возможно я плохо понимаю, что добавлять к параметру "file":
Пробовал добавить абсолютный URL файла.
Пробовал загрузить файл на сервер в папку wa-data/public/ и добавлял в запросе относительный путь к файлу (например wa-data/public/123.jpg).
Пробовал добавить file_get_contents('http://somesite.ru/123.jpg')
Пробовал перед отправкой кодировать через base64_encode.
Все та же ошибка. Что делать?
Код примерно такой:
$url = 'http://myshop.ru/api.php/shop.product.add?product_id=100&access_token=...';
$post = 'file='.base64_encode(file_get_contents('http://site.ru/kartinka.jpg'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$output = curl_exec($ch);
curl_close($ch);
var_dump($output);
3 ответа
curl_setopt($ch, CURLOPT_POSTFIELDS,
array('file' =>'@'.realpath($file_path))
);
в php7 и php < 5.5 разные способы формирования массивов для
пример такой функции:
где url - ссылка на api со всеми параметрами
$url = 'http://myshop.ru/api.php/shop.product.add?product_id=100&access_token=...';