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

发布于 2024-11-19 04:36:02 字数 750 浏览 4 评论 0原文

我正在使用 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
      )
    )
  );

I'm using the Magento Soap Api to upload pictures of products. I can't seem to specify the name I wish Magento so save the file as on the server even though I specify the "name" as per the Magento documentation.

I'm using Magento 1.2.1.2 and can't upgrade as the site uses modules that break in newer version.

Any thoughts on how I can specify the file name that Magento saves the image as?

The code I'm using:

$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
      )
    )
  );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

離殇 2024-11-26 04:36:02

您无法指定文件名。唯一的解决方案是您更改 Magento 文件以允许使用此线程。为了您的方便,我提供了以下解决方案(并根据您将文件名发送为上面的 name 的事实进行了调整):

修改 ./app/code/ core/Mage/Catalog/Model/Product/Attribute/Media/Api.php

您需要替换 $fileName = 'image.' 。 $this->_mimeTypes[$data['file']['mime']]; with:

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

如果您觉得更具冒险精神,您可以扩展该类而不是更改它并覆盖 使用您自己的功能创建 函数。

You can't specify the filename. The only solution would be for you change the Magento files to allow a filename as suggested in this thread. For your convenience I've included the solution below (and adapted it based on the fact that you're sending the filename as name above):

Modify ./app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php:

You'll want to replace $fileName = 'image.' . $this->_mimeTypes[$data['file']['mime']]; with:

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

If you feel a little more adventurous, you could extend the class instead of changing it and override the create function with your own functionality.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文