Загрузите изображение продукта с помощью веб-сервиса PrestaShop с узлом
Я пытаюсь загрузить изображение продукта с помощью веб-сервиса PrestaShop.
Он всегда возвращает ту же ошибку:
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<errors>
<error>
<code><![CDATA[66]]></code>
<message><![CDATA[Unable to save this image]]></message>
</error>
</errors>
</prestashop>
Мой текущий код выглядит так:
const url = this.options.url
+ '/api/images/products/'
+ piezaSchema.querySelector('product>id').childNodes[0].nodeValue
+ '?ws_key='
+ this.options.api;
const file = require('fs').readFileSync(require('path')
.resolve(this.options.ruta
+ '/images/'
+ image.getAttribute('fichero')));
const resp = await fetch(url, {
method: 'POST',
body: 'image=' + file,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
Я пробовал с различными вариантами кодировки, отправляя как 'Content-Type': 'image/jpeg'
и т. д.
Спасибо всем за ваше время.
У вопроса есть решение - Посмотреть?
Ответы - Загрузите изображение продукта с помощью веб-сервиса PrestaShop с узлом / Upload a product image using PrestaShop Web-service with Node

30.05.2019 09:53:51
Эта ошибка вызвана writePostedImageOnDisk()
в /classes/webservice/WebserviceSpecificManagementImages.php
.
Обычно это может быть связано с:
- Отсутствие прав доступа к папке PHP
/tmp
и / или_PS_TMP_IMG_DIR_
$_FILES['image']['tmp_name'] being empty
- Некоторые проблемы с
customized_data
Надеюсь, это поможет!

31.05.2019 10:30:55
Я смог исправить, отправив изображение, как если бы оно было загружено формой:
async uploadImage(fichero, url) {
const form = new FormData();
const filePath = require('path').resolve(this.options.ruta + '/images/' + fichero);
const file = new File([await fetch(filePath).then(r => r.blob())], fichero, {type: 'image/jpeg'});
form.append('image', file);
const options = {
method: 'POST',
body: form
};
fetch(url, options);
}
Помочь в развитии проекта: