Loại tệp .svg Lỗi khi tải lên hình ảnh Magento 2.3.1


8

Làm thế nào để cho phép các loại tập tin svg tải lên hình ảnh magento 2

Hiển thị trong system.log

main.ERROR: Unsupported image format. File:

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

có gì sai sao?
Savan Patel


@mighty_hk vâng tôi biết nhưng không làm việc cho tôi
Savan Patel

hình ảnh sản phẩm ???
Rk Rathod

Bạn đã quản lý để tải lên Svg? Nếu có, xin vui lòng cho tôi biết giải pháp
Zoya

Câu trả lời:


1

Mô-đun này cho phép tải lên các kiểu tệp khác nhau bên trong trình soạn thảo WYSIWYG.

Các kiểu tệp sau đây có sẵn theo mặc định và có thể thêm các kiểu tệp bổ sung vào các kiểu tệp được phép trong cấu hình của mô-đun (Chung> Quản lý nội dung> Tùy chọn WYSIWYG> Kiểu tệp được phép bổ sung):

Word (doc, docm, docx)

Excel (csv, xml, xls, xlsx)

PDF (pdf)

Compressed Folder (zip, tar)

https://github.com/experius/Magento-2-Module-Experius-WysiwygDoads

Bạn có thể chỉnh sửa di.xml và thêm mã sau

<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>

và trong phần phụ trợ thiết lập những gì bạn cần như thế này

nhập mô tả hình ảnh ở đây


Chỉ cần thêm mã là đủ cho di.xml hoặc cũng cần phải cài đặt plugin?
Zoya

8

Lý do SVG bị vô hiệu hóa trong Magento 2 theo mặc định, là vì lý do bảo mật, chẳng hạn như XSS được lưu trữ. Và tôi sẽ khuyên bạn nên để chúng bị vô hiệu hóa ít nhất cho đến khi chúng tôi có được sự vệ sinh tốt hơn cho chúng.

Bạn có thể thấy một ví dụ về điều này APPSEC-1673, nơi họ đã loại bỏ các SVG trong favicon

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

APPSEC-1673 Lưu trữ xss bằng cách sử dụng hình ảnh svg trong Favicon.

Mặc dù bạn không thể tải lên SVG thông qua phần phụ trợ, bạn vẫn có thể tải chúng lên bằng FTP và tham chiếu chúng như thể bạn đã tải chúng lên. Bằng cách này, bạn vẫn nhận được những lợi ích của việc sử dụng SVG nhưng bạn không phải đối phó với các vấn đề bảo mật khi cho phép người dùng tải chúng.

Cho phép tải lên SVG để tải lên Favicon / Logo

Nhưng nếu bạn vẫn muốn kích hoạt tải lên SVG để tải lên favicon / logo. Bạn có thể tạo một mô-đun tùy chỉnh và ghi đè các nút xml / hàm php nơi nó bị xóa khỏi đó. Bạn có thể tìm thấy những điều này trong khác biệt dưới đây

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

Kích hoạt SVG ở nơi khác

Phụ thuộc vào nơi bạn muốn kích hoạt tải lên SVG sẽ ảnh hưởng đến những tập tin bạn sẽ cần ghi đè. Bạn sẽ có thể tìm thấy các tệp bạn cần chỉnh sửa bằng cách tìm kiếm nhanh allowedExtensionstrong XMLcác tệp hoặc getAllowedExtensions setAllowedExtensionstrong PHPtệp.


6

mở HOẶC ghi đè bên dưới tập tin và mã <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>

Nếu bạn sử dụng phiên bản magento 2.3 bên dưới, mã silde sẽ thay đổi. Thay thế mã ở trên <item name="svg" xsi:type="string">text/html</item>Để<item name="svg" xsi:type="number">1</item>


vẫn không hoạt động Xác thực tập tin thất bại. và tôi đề cập đến việc tôi sử dụng phiên bản magento 2.3.1
Savan Patel

5

Mở tập tin bên dưới

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

Thêm tiện ích mở rộng bạn muốn cho phép

<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>

Cảm ơn Rakesh nhưng vẫn không hoạt động
Savan Patel

@SavanPatel bạn đã kiểm tra đường dẫn chủ đề của mình ghi đè tập tin này chưa? nếu ghi đè thì mã này cập nhật trong tệp
Rakesh Donga

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.