파일 업로드 .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 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 이하 버전을 사용하는 경우 코드 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.