文件类型.svg图像上传Magento 2.3.1中的错误


8

如何允许文件类型svg图像上载magento 2

在system.log中显示

main.ERROR: Unsupported image format. File:

/var/www/html/pub/media//logos_1.svg

有什么问题吗?
Savan Patel


@mighty_hk是的,我知道,但不是为我工作
萨文特尔

产品图片???
Rk Rathod

您是否成功上传了svg?如果是,请让我知道解决方案
Zoya

Answers:


1

该模块可以在所见即所得编辑器中上载不同的文件类型。

默认情况下,以下文件类型可用,并且可以在模块的配置中将其他文件类型添加到允许的文件类型中(常规>内容管理> WYSIWYG选项>允许的额外文件类型):

Word (doc, docm, docx)

Excel (csv, xml, xls, xlsx)

PDF (pdf)

Compressed Folder (zip, tar)

https://github.com/experius/Magento-2-Module-Experius-Wysiwyg下载

您可以编辑di.xml并添加以下代码

<item name="allowed" xsi:type="array">
    <item name="svg" xsi:type="string">image/svg</item> 
</item>

<item name="image_allowed" xsi:type="array">
    <item name="svg" xsi:type="string">image/svg</item>
</item>

<item name="media_allowed" xsi:type="array">
    <item name="svg" xsi:type="string">image/svg</item>
</item>

然后在后端设置您需要的东西

在此处输入图片说明


只需将代码添加到di.xml就足够了,还是还需要安装插件?
Zoya

8

默认情况下,Magento 2中禁用SVG的原因是出于安全原因,例如存储的XSS。我建议您至少让他们暂时禁用,直到我们为他们进行更好的消毒为止。

您可以在中看到一个示例APPSEC-1673,他们在其中删除了收藏夹图标中的SVG。

https://magento.com/security/patches/magento-2016-and-219-security-update

APPSEC-1673 在Favicon中使用svg图像存储xss。

虽然您无法通过后端上传SVG,但仍可以通过FTP上载它们,并像引用它们一样引用它们。这样,您仍然可以获得使用SVG的好处,但不必处理允许用户加载它们的安全性问题。

为Favicon /徽标上传启用SVG上传

但是,如果您仍然想为favicon / logo上传启用SVG上传。您可以创建一个自定义模块,并覆盖从中删除该模块的xml node / php函数。您可以在下面的差异中找到这些

https://github.com/magento/magento2/compare/2.1.8...2.1.9

在其他地方启用SVG

取决于要在何处启用SVG上载,将影响您需要覆盖哪些文件。你应该能找到你需要编辑通过快速搜索文件allowedExtensionsXML的文件或其中getAllowedExtensions setAllowedExtensionsPHP文件。


6

打开或覆盖下面的文件和代码 <item name="svg" xsi:type="string">text/html</item>

/vendor/magento/module-cms/etc/di.xml

<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
    <arguments>
        <argument name="extensions" xsi:type="array">
            <item name="allowed" xsi:type="array">
                ......
                <item name="svg" xsi:type="string">text/html</item>
                ......
            </item>
            <item name="image_allowed" xsi:type="array">
                ......
                <item name="svg" xsi:type="string">text/html</item>
                ......
            </item>
            <item name="media_allowed" xsi:type="array">
                ......
                <item name="svg" xsi:type="string">text/html</item>
                ......
            </item>
        </argument>
    </arguments>
</type>

如果使用低于magento 2.3版本,则代码更改。将上面的代码替换<item name="svg" xsi:type="string">text/html</item><item name="svg" xsi:type="number">1</item>


仍然无法正常工作文件验证失败。我提到我使用了magento 2.3.1版本
Savan Patel

5

在文件下面打开

/vendor/magento/module-cms/etc/di.xml

添加您要允许的扩展

<item name="svg" xsi:type="number">1</item>

<argument name="extensions" xsi:type="array">
    <item name="allowed" xsi:type="array">
        <item name="jpg" xsi:type="number">1</item>
        <item name="jpeg" xsi:type="number">1</item>
        <item name="png" xsi:type="number">1</item>
        <item name="gif" xsi:type="number">1</item>
        <item name="svg" xsi:type="number">1</item>
    </item>
    <item name="image_allowed" xsi:type="array">
        <item name="jpg" xsi:type="number">1</item>
        <item name="jpeg" xsi:type="number">1</item>
        <item name="png" xsi:type="number">1</item>
        <item name="gif" xsi:type="number">1</item>
    </item>
    <item name="media_allowed" xsi:type="array">
        <item name="flv" xsi:type="number">1</item>
        <item name="swf" xsi:type="number">1</item>
        <item name="avi" xsi:type="number">1</item>
        <item name="mov" xsi:type="number">1</item>
        <item name="rm" xsi:type="number">1</item>
        <item name="wmv" xsi:type="number">1</item>
    </item>
</argument>

由于拉克什但仍然没有工作
萨文特尔

@SavanPatel您已经检查了此文件覆盖的主题路径?如果覆盖,则此代码在文件中更新
Rakesh Donga

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.