首页>Magento>source

我正在尝试通过POST到此网址使用网络API设置产品图片:

http://my_magento_server/rest/V1/products/my-url-key/media

具有以下内容:

{"entry":
  {
    "media_type": "image",
    "label": "Image",
    "position": 1,
    "disabled": false,
    "types": [
      "image",
      "small_image",
      "thumbnail"
    ],
    "file": "/m/b/mb01-blue-0.jpg",
    "content": {
      "base64EncodedData": "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWtJREFUeNpi/P//P8NgBkwMgxyMOnDUgTDAyMhIDNYF4vNA/B+IDwCxHLoakgEoFxODiQRXQUYi4e3k2gfDjMRajsP3zED8F8pmA+JvUDEYeArEMugOpFcanA/Ef6A0CPwC4uNoag5SnAjJjGI2tKhkg4rLAfFGIH4IxEuBWIjSKKYkDfZCHddLiwChVhokK8YGohwEZYy3aBmEKmDEhOCgreomo+VmZHxsMEQxIc2MAx3FO/DI3RxMmQTZkI9ALDCaSUYdOOrAIeRAPzQ+PxCHUM2FFDb5paGNBPRa5C20bUhxc4sSB4JaLnvxVHWHsbVu6OnACjyOg+HqgXKgGRD/JMKBoD6LDb0dyAPE94hwHAw/hGYcujlwEQmOg+EV9HJgLBmOg+FMWjsQVKR8psCBoDSrQqoDSSmoG6Hpj1wA6ju30LI9+BBX4UsC+Ai0T4BWVd1EIL5PgeO+APECmoXgaGtm1IE0AgABBgAJAICuV8dAUAAAAABJRU5ErkJggg==",
      "type": "image/jpeg",
      "name": "new image"
    }
  }
}

但我收到了400回复:

The image MIME type is not valid or not supported

知道如何在Magento 2中将文件作为产品图像上传吗?

最新回答
  • 2019-12-5
    1 #

    在base64解码你提供的图像后,我注意到它是PNG图像,而不是JPEG。

    尝试将JSON中的"type"属性更改为"image /png"。

    此外,您应该将文件扩展名添加到"name"属性中。

    以下示例对我来说很好。

    {
            "entry": {
                "media_type": "image",
                "label": "Image",
                "position": 1,
                "disabled": false,
                "types": [
                    "image",
                    "small_image",
                    "thumbnail"
                ],
                "file": "/m/b/mb01-blue-0.png",
                "content": {
                    "base64EncodedData": "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWtJREFUeNpi/P//P8NgBkwMgxyMOnDUgTDAyMhIDNYF4vNA/B+IDwCxHLoakgEoFxODiQRXQUYi4e3k2gfDjMRajsP3zED8F8pmA+JvUDEYeArEMugOpFcanA/Ef6A0CPwC4uNoag5SnAjJjGI2tKhkg4rLAfFGIH4IxEuBWIjSKKYkDfZCHddLiwChVhokK8YGohwEZYy3aBmEKmDEhOCgreomo+VmZHxsMEQxIc2MAx3FO/DI3RxMmQTZkI9ALDCaSUYdOOrAIeRAPzQ+PxCHUM2FFDb5paGNBPRa5C20bUhxc4sSB4JaLnvxVHWHsbVu6OnACjyOg+HqgXKgGRD/JMKBoD6LDb0dyAPE94hwHAw/hGYcujlwEQmOg+EV9HJgLBmOg+FMWjsQVKR8psCBoDSrQqoDSSmoG6Hpj1wA6ju30LI9+BBX4UsC+Ai0T4BWVd1EIL5PgeO+APECmoXgaGtm1IE0AgABBgAJAICuV8dAUAAAAABJRU5ErkJggg==",
                    "type": "image/png",
                    "name": "new_image.png"
                }
            }
        }
    

  • 2019-12-5
    2 #

    我认为名称必须包含文件扩展名。 尝试使用 "name": "new image.jpg"   或者 "name": "new image.png"

    我也有问题,我无法以缩略图的形式上传我的图片.我必须手动设置。

    {
      "entry": {
        "mediaType": "image",
        "disabled": "false",
        "types": [
          "image",
          "small_image",
          "thumbnail"
        ],
        "content": {
          "base64EncodedData": "...", 
          "type": "image/jpeg",
          "name": "image.jpg"
        }
      }
    }
    

  • 2019-12-5
    3 #

    你做错了一件事。你不需要使用 "file": "/m/b/mb01-blue-0.jpg", 在您的请求包中.它是由Magento自己生成的。最终的数据包应该是这样的..

    {
        "entry": {
            "media_type": "image",
            "label": "Image",
            "position": 1,
            "disabled": false,
            "types": [
                "image",
                "small_image",
                "thumbnail"
            ],
            "content": {
                "base64EncodedData": "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWtJREFUeNpi/P//P8NgBkwMgxyMOnDUgTDAyMhIDNYF4vNA/B+IDwCxHLoakgEoFxODiQRXQUYi4e3k2gfDjMRajsP3zED8F8pmA+JvUDEYeArEMugOpFcanA/Ef6A0CPwC4uNoag5SnAjJjGI2tKhkg4rLAfFGIH4IxEuBWIjSKKYkDfZCHddLiwChVhokK8YGohwEZYy3aBmEKmDEhOCgreomo+VmZHxsMEQxIc2MAx3FO/DI3RxMmQTZkI9ALDCaSUYdOOrAIeRAPzQ+PxCHUM2FFDb5paGNBPRa5C20bUhxc4sSB4JaLnvxVHWHsbVu6OnACjyOg+HqgXKgGRD/JMKBoD6LDb0dyAPE94hwHAw/hGYcujlwEQmOg+EV9HJgLBmOg+FMWjsQVKR8psCBoDSrQqoDSSmoG6Hpj1wA6ju30LI9+BBX4UsC+Ai0T4BWVd1EIL5PgeO+APECmoXgaGtm1IE0AgABBgAJAICuV8dAUAAAAABJRU5ErkJggg==",
                "type": "image/png",
                "name": "new_image.png"
            }
        }
    }
    

    试试吧.它会工作。

  • 2019-12-5
    4 #

    这个Megento Bug仍未解决.我通过包装这个条件修复了这个 在MAGE_ROOT_FOLDER / vendor / magento / framework / Api / ImageContentValidator.php

    if ($sourceMimeType != $imageContent->getType() || !$this->isMimeTypeValid($sourceMimeType)) {
                throw new InputException(new Phrase('The image MIME type is not valid or not supported.'));
            }
    

    在这样的另一个条件中

    if ($sourceMimeType != 'image/png') {
            if ($sourceMimeType != $imageContent->getType() || !$this->isMimeTypeValid($sourceMimeType)) {
                throw new InputException(new Phrase('The image MIME type is not valid or not supported.'));
            }
        }
    

    我知道修改供应商文件夹中的任何文件都是一个坏主意但是虽然这个问题仍未解决,但您应该采取一些措施来完成工作!

  • magento2:运营商/ shipping_code(默认/运营商/ shipping_code /类型)下的类型含义是什么?
  • Magento2:Magento2 - 如何从Controller获取JSON响应