파일 업로드 .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 예 알고 있지만 나를 위해 작동하지 않습니다
— Savan Patel

제품 이미지 ???
— Rk Rathod 2016 년

svg를 업로드하셨습니까? 그렇다면 해결책을 알려주십시오
— Zoya

답변:


1

이 모듈을 사용하면 WYSIWYG 편집기 내에서 다른 파일 형식을 업로드 할 수 있습니다.

다음 파일 유형은 기본적으로 사용 가능하며 모듈 구성에서 허용되는 파일 유형에 추가 파일 유형을 추가 할 수 있습니다 (일반> 컨텐츠 관리> 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

SVG가 기본적으로 Magento 2에서 비활성화 된 이유는 저장된 XSS와 같은 보안상의 이유 때문입니다. 그리고 더 나은 위생 상태가 될 때까지는 최소한 비활성화 상태로 두는 것이 좋습니다.

APPSEC-1673favicon에서 SVG를 제거한 곳 에서 이에 대한 예를 볼 수 있습니다.

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

APPSEC-1673 Favicon에서 svg 이미지를 사용하여 xss를 저장했습니다.

백엔드를 통해 SVG를 업로드 할 수는 없지만 여전히 FTP로 업로드하여 업로드 한 것처럼 참조 할 수 있습니다. 이런 식으로 SVG를 사용하면 여전히 이점을 얻을 수 있지만 사용자가로드 할 수 있도록하는 보안 문제를 처리 할 필요는 없습니다.

Favicon / Logo 업로드에 SVG 업로드 사용

그러나 여전히 favicon / logo 업로드에 SVG 업로드를 사용하려면 커스텀 모듈을 생성하고 xml node / php 함수를 제거 할 수 있습니다. 아래 diff에서 찾을 수 있습니다

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

다른 곳에서 SVG 사용

SVG 업로드를 활성화하려는 위치에 따라 재정의해야하는 파일에 영향을줍니다. 당신은 당신이 빠른 검색에 의해 편집에 필요한 파일을 찾을 수 있어야 allowedExtensions에서 XML파일 또는 하나 getAllowedExtensions setAllowedExtensions의 PHP파일을.


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 이하 버전을 사용하는 경우 코드 silde가 변경됩니다. 위의 코드 <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>

감사합니다 Rakesh하지만 여전히 작동하지 않음
— Savan Patel

@SavanPatel 당신은 당신의 테마 경로가 파일 오버라이드를 확인 했습니까? 재정의하면 파일의 코드 업데이트
— Rakesh Donga

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.