如何使用Magento Soap Api上传产品图片时指定文件名

时间:2011-07-08 19:36:25

标签: php api magento soap

我正在使用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 个答案:

答案 0 :(得分:2)

您无法指定文件名。唯一的解决方案是更改Magento文件以允许this thread中建议的文件名。为了您的方便,我已经在下面提供了解决方案(并根据您将文件名发送到上面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功能。