Как указать имя файла при загрузке изображения продукта с помощью Magento Soap Api - PullRequest
2 голосов
/ 08 июля 2011

Я использую Magento Soap Api для загрузки изображений продуктов. Кажется, я не могу указать имя, которое я хочу Magento, поэтому сохраните файл как на сервере, хотя я указываю «имя» согласно документации Magento.

Я использую Magento 1.2.1.2 и не могу выполнить обновление, поскольку на сайте используются модули, которые выходят из строя в более новой версии.

Есть мысли о том, как указать имя файла, в котором Magento сохраняет изображение как?

Код, который я использую:

$client->call(
    $session_id,
    'catalog_product_attribute_media.create',
    array(
      $sku,
      array(
        'file' => array(
          'content' => base64_encode(file_get_contents($filename)),
          'mime' => $imageinfo['mime'],
          'name' => $filename
        ),
        'label' => $description,
        'types' => array(
          'image',
          'small_image',
          'thumbnail'
        ),
        'exclude' => FALSE
      )
    )
  );

1 Ответ

2 голосов
/ 09 июля 2011

Вы не можете указать имя файла.Единственным решением для вас было бы изменить файлы Magento, чтобы разрешить имя файла, как предложено в этой теме .Для вашего удобства я включил приведенное ниже решение (и адаптировал его на основе того факта, что вы отправляете имя файла как name выше):

Изменить ./app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php:

Вы можете заменить $fileName = 'image.' . $this->_mimeTypes[$data['file']['mime']]; на:

if ( ! empty($data['file']['name']) )
  $fileName = $data['file']['name'];
else
  $fileName = 'image.' . $this->_mimeTypes[$data['file']['mime']];

Если вы чувствуете себя немного более авантюрным, вы можете расширить класс вместо его изменения и переопределить функцию create с помощьюваш собственный функционал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...