현재 위치: > 최신 기사 목록> image_type_to_extension 잘못된 확장을 반환하는 이유와 해결책은 무엇입니까?

image_type_to_extension 잘못된 확장을 반환하는 이유와 해결책은 무엇입니까?

gitbox 2025-09-17

php에서 image_type_to_extension (int $ image_type, bool $ include_dot = true) : String | false는 종종 (예 : imageetype_png ) 를 확장자 (예 : .png )로 변환하는 데 사용됩니다.
그러나 실제 프로젝트에서 많은 학생들이 "잘못된 확장을 반환했다"고 피드백을받을 것입니다. 대부분의 경우 함수가 잘못된 것이 아니라 호출 방법이나 사전 판단에 문제가 있습니다.

다음은 일반적인 "잘못 판단"출처, 재생산 방법 및 수정 계획에 대한 명확한 설명입니다.

1. 일반적인 이유에 대한 개요

  1. "파일 이름/마임 문자열/파일 경로" 를 $ image_type 로 실수합니다

    • image_type_to_extension ()은 'image/jpeg' , 'xxx.jpg' 또는 파일 경로가 아닌 정수 상수 ( imageType_* )가 필요합니다.

    • 오류 예 : image_type_to_extension ( 'image/jpeg').jpg를 반환하기를 희망하면 실제로 False 또는 오류가 발생합니다.

  2. $ image_type 의 값 소스가 잘못되었습니다

    • 올바른 방법 : exif_imagetype ($ file) 또는 gettimagesize ($ file) [2]를 사용하여 정수 유형 값을 얻으십시오.

    • 오류 : $ _files [ 'type'] (클라이언트가 위조 될 수 있음) 또는 finfo_file ()마임 문자열 에서 직접 전달하십시오.

  3. .jpeg.jpg 기대치는 일치하지 않습니다

    • 사양에서 JPEG의 확장은 .jpeg 또는 .jpg 일 수 있습니다. image_type_to_extension (imageetype_jpeg)은 기본적으로 .jpeg를 반환합니다.

    • 비즈니스에서 .jpg를 사용하는 경우 별명을 수동으로 변환해야합니다.

  4. 두 번째 매개 변수 $ 포함 _dot은 반대로 이해됩니다

    • 기본 True는 점선 확장자 (예 : .png )를 반환합니다.

    • 당신은 일부가 없습니다 : image_type_to_extension ($ t, false)png .

    • 일반적인 상황 : 스 플라이 싱 경로에 수동으로 점을 추가하면 결과가 PNG가 됩니다.

  5. GD/확장 지원은 예상 형식과 일치하지 않습니다

    • 일부 유형 (예 : Webp, AVIF)에는 해당 GD/Imagick 버전 지원이 필요합니다. image_type_to_extension () 은 확장자를 제공 할 수 있지만, 후속 저장 함수 (예 : ImageWebp )가 존재하지 않거나 사용할 수 없으므로 "확장이 잘못되었다고 생각할 수 없다"는데, 이는 저장 링크에서 본질적으로 지원되지 않습니다 .

    • ImageType_wbmp 와 같은 다른 유형은 .wbmp를 반환하고 많은 사람들이 실수로 .BMP 라고 생각합니다.

  6. 내용은 확장자와 일치하지 않습니다 (잘못된 기능은 쓰기 과정에서 사용됩니다)

    • PNG인지 감지했지만 ImageJPeg ()를 사용하여 저장하고 비트 맵을 JPEG에 작성한 다음 .png 확장자를 얻었고 "이름과 현실은 일치하지 않습니다".

    • 그 반대도 : 감지 결과가 저장 기능 과 일치하는지 확인하십시오.

  7. finfo_file () 에서 연장 된 직접 매핑 왜곡

    • FINFO는 이미지/JPEG 와 같은 모방을 반환합니다. 문자열 매핑을 직접 맵핑하면 이미지/jpeg.jpg를 사용할 수 있으며 image_type_to_extension ().jpeg를 제공합니다. "잘못된"것처럼 보이지만 실제로는 일치하지 않는 매핑입니다.

2. $ image_type를 올바르게 얻는 방법

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'/path/to/uploaded/file'</span></span><span>;

</span><span><span class="hljs-comment">// 방법 A:더 안정적입니다</span></span><span>
</span><span><span class="hljs-variable">$type</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">exif_imagetype</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>); </span><span><span class="hljs-comment">// 반품 IMAGETYPE_* 정수 또는 false</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$type</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'이미지 유형을 인식 할 수 없습니다'</span></span><span>);
}

</span><span><span class="hljs-comment">// 방법 B:getimagesize</span></span><span>
</span><span><span class="hljs-variable">$info</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">getimagesize</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$info</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'유효한 그림이 아닙니다'</span></span><span>);
}
</span><span><span class="hljs-variable">$type</span></span><span> = </span><span><span class="hljs-variable">$info</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// 같은 IMAGETYPE_* 정수</span></span><span>
</span></span>

image_type_to_extension () 에 다음을 직접 전달 하지 마십시오 .

  • '이미지/png' (Mime String)

  • 'xxx.jpg' (파일 이름)

  • '/path/to/file' (Path)

3. 통합 확장 : 별명 및 양식

많은 팀이 희망 :

  • jpeg는 항상 .jpg 입니다 ( .jpeg )

  • 포인트 제거 (스 플라이 싱)

  • 희귀 유형에 대한 별명을 추가하십시오

작은 기능이 캡슐화 될 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">preferred_extension_from_file</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$includeDot</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-variable">$type</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">exif_imagetype</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$type</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">'이미지 유형을 인식 할 수 없습니다:'</span></span><span> . </span><span><span class="hljs-variable">$file</span></span><span>);
    }

    </span><span><span class="hljs-variable">$ext</span></span><span> = </span><span><span class="hljs-title function_ invoke__">image_type_to_extension</span></span><span>(</span><span><span class="hljs-variable">$type</span></span><span>, </span><span><span class="hljs-variable">$includeDot</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$ext</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'유형에서 확장을 매핑 할 수 없습니다'</span></span><span>);
    }

    </span><span><span class="hljs-comment">// 통일 된 사례</span></span><span>
    </span><span><span class="hljs-variable">$ext</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$ext</span></span><span>);

    </span><span><span class="hljs-comment">// 비즈니스 선호도 별칭</span></span><span>
    </span><span><span class="hljs-variable">$map</span></span><span> = [
        </span><span><span class="hljs-comment">// 당신이 관심있는 것을 다루십시오“스타일”차이점</span></span><span>
        </span><span><span class="hljs-variable">$includeDot</span></span><span> ? </span><span><span class="hljs-string">'.jpeg'</span></span><span> : </span><span><span class="hljs-string">'jpeg'</span></span><span> =&gt; </span><span><span class="hljs-variable">$includeDot</span></span><span> ? </span><span><span class="hljs-string">'.jpg'</span></span><span> : </span><span><span class="hljs-string">'jpg'</span></span><span>,
        </span><span><span class="hljs-variable">$includeDot</span></span><span> ? </span><span><span class="hljs-string">'.tiff'</span></span><span> : </span><span><span class="hljs-string">'tiff'</span></span><span> =&gt; </span><span><span class="hljs-variable">$includeDot</span></span><span> ? </span><span><span class="hljs-string">'.tif'</span></span><span> : </span><span><span class="hljs-string">'tif'</span></span><span>,
    ];

    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$map</span></span><span>[</span><span><span class="hljs-variable">$ext</span></span><span>] ?? </span><span><span class="hljs-variable">$ext</span></span><span>;
}
</span></span>

용법:

 <span><span><span class="hljs-variable">$ext</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preferred_extension_from_file</span></span><span>(</span><span><span class="hljs-string">'/uploads/a.tmp'</span></span><span>);           </span><span><span class="hljs-comment">// 可能반품 .jpg</span></span><span>
</span><span><span class="hljs-variable">$extNoDot</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preferred_extension_from_file</span></span><span>(</span><span><span class="hljs-string">'/uploads/a.tmp'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// 可能반품 jpg</span></span><span>
</span></span>

4. 이름과 현실이 파일과 일치하는지 확인하십시오.

유형 감지는 첫 번째 단계 일 뿐이며, 더 중요한 것은 올바른 쓰기 기능을 사용하는 것입니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">save_image_as_detected</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$srcPath</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$destDir</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-variable">$type</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">exif_imagetype</span></span><span>(</span><span><span class="hljs-variable">$srcPath</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$type</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">'유효한 그림이 아닙니다:'</span></span><span> . </span><span><span class="hljs-variable">$srcPath</span></span><span>);
    }

    </span><span><span class="hljs-variable">$ext</span></span><span> = </span><span><span class="hljs-title function_ invoke__">image_type_to_extension</span></span><span>(</span><span><span class="hljs-variable">$type</span></span><span>); </span><span><span class="hljs-comment">// 좋다 .png / .jpeg / .webp</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$ext</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'확장을지도 할 수 없습니다'</span></span><span>);
    }

    </span><span><span class="hljs-comment">// 유형별로 해당 저장 기능을 선택하십시오</span></span><span>
    </span><span><span class="hljs-keyword">switch</span></span><span> (</span><span><span class="hljs-variable">$type</span></span><span>) {
        </span><span><span class="hljs-keyword">case</span></span><span> IMAGETYPE_JPEG:
            </span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-variable">$srcPath</span></span><span>);
            </span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'img_'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>) . </span><span><span class="hljs-string">'.jpg'</span></span><span>; </span><span><span class="hljs-comment">// 비즈니스 선호도:사용 .jpg</span></span><span>
            </span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$destDir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>);
            </span><span><span class="hljs-keyword">break</span></span><span>;

        </span><span><span class="hljs-keyword">case</span></span><span> IMAGETYPE_PNG:
            </span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$srcPath</span></span><span>);
            </span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'img_'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>) . </span><span><span class="hljs-string">'.png'</span></span><span>;
            </span><span><span class="hljs-comment">// 소량의 경우:열려 있는 Alpha,압축을 설정하십시오</span></span><span>
            </span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
            </span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$destDir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>);
            </span><span><span class="hljs-keyword">break</span></span><span>;

        </span><span><span class="hljs-keyword">case</span></span><span> IMAGETYPE_GIF:
            </span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromgif</span></span><span>(</span><span><span class="hljs-variable">$srcPath</span></span><span>);
            </span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'img_'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>) . </span><span><span class="hljs-string">'.gif'</span></span><span>;
            </span><span><span class="hljs-title function_ invoke__">imagegif</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$destDir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$filename</span></span><span>);
            </span><span><span class="hljs-keyword">break</span></span><span>;

        </span><span><span class="hljs-keyword">case</span></span><span> IMAGETYPE_WEBP:
            </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'imagecreatefromwebp'</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'imagewebp'</span></span><span>)) {
                </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'현재의 GD 지원되지 않습니다 WebP'</span></span><span>);
            }
            </span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromwebp</span></span><span>(</span><span><span class="hljs-variable">$srcPath</span></span><span>);
            </span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'img_'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>) . </span><span><span class="hljs-string">'.webp'</span></span><span>;
            </span><span><span class="hljs-title function_ invoke__">imagewebp</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$destDir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-number">85</span></span><span>);
            </span><span><span class="hljs-keyword">break</span></span><span>;

        </span><span><span class="hljs-keyword">default</span></span><span>:
            </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RuntimeException</span></span><span>(</span><span><span class="hljs-string">'暂지원되지 않습니다的图片类型:'</span></span><span> . </span><span><span class="hljs-variable">$type</span></span><span>);
    }

    </span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>;
}
</span></span>

핵심 사항 :

  • 감지 결과는 저장 기능 (PNG → ImagePNG , JPEG → ImageJPEG …)과 일치합니다.

  • 팀이 Unified.jpg 인 경우 파일 이름을 생성 할 때 별명을 변환 할 수 있으며, 이는 image_type_to_extension () 의 반환 값과 충돌하지 않는 파일 이름을 생성 할 수 있습니다.

5. FINFO 와 협력하기위한 올바른 자세

MIME를 먼저 복용 한 다음 확장하는 데 더 익숙한 경우 image_type_to_extension () 에 직접 Mime을 던지는 대신 고품질 맵핑 테이블을 유지할 수 있습니다. :

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">ext_from_mime</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$mime</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$includeDot</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>): ?</span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-built_in">static</span></span><span> </span><span><span class="hljs-variable">$map</span></span><span> = [
        </span><span><span class="hljs-string">'image/jpeg'</span></span><span> =&gt; </span><span><span class="hljs-string">'jpg'</span></span><span>,   </span><span><span class="hljs-comment">// 비즈니스 선호도</span></span><span>
        </span><span><span class="hljs-string">'image/png'</span></span><span>  =&gt; </span><span><span class="hljs-string">'png'</span></span><span>,
        </span><span><span class="hljs-string">'image/gif'</span></span><span>  =&gt; </span><span><span class="hljs-string">'gif'</span></span><span>,
        </span><span><span class="hljs-string">'image/webp'</span></span><span> =&gt; </span><span><span class="hljs-string">'webp'</span></span><span>,
        </span><span><span class="hljs-string">'image/bmp'</span></span><span>  =&gt; </span><span><span class="hljs-string">'bmp'</span></span><span>,
        </span><span><span class="hljs-string">'image/x-ms-bmp'</span></span><span> =&gt; </span><span><span class="hljs-string">'bmp'</span></span><span>,
        </span><span><span class="hljs-string">'image/tiff'</span></span><span> =&gt; </span><span><span class="hljs-string">'tif'</span></span><span>,
        </span><span><span class="hljs-string">'image/svg+xml'</span></span><span> =&gt; </span><span><span class="hljs-string">'svg'</span></span><span>,
        </span><span><span class="hljs-string">'image/vnd.microsoft.icon'</span></span><span> =&gt; </span><span><span class="hljs-string">'ico'</span></span><span>,
    ];
    </span><span><span class="hljs-variable">$ext</span></span><span> = </span><span><span class="hljs-variable">$map</span></span><span>[</span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$mime</span></span><span>)] ?? </span><span><span class="hljs-literal">null</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$ext</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">null</span></span><span>;
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$includeDot</span></span><span> ? (</span><span><span class="hljs-string">'.'</span></span><span> . </span><span><span class="hljs-variable">$ext</span></span><span>) : </span><span><span class="hljs-variable">$ext</span></span><span>;
}
</span></span>

권장 전략 :

  • imageType_ * im

  • 통합 스타일 ( .jpg 등)이 필요한 경우 별칭 매핑 레이어를 만드십시오.

  • 필요한 경우에만 FINFO를 사용하고 자체 관리 테이블 착륙장을 사용하십시오.

6. 체크리스트

  • $ image_typeexif_imagetype () / getImagesize () [2] 에서 나옵니다.

  • MIME/파일 경로가 image_type_to_extension () 로 잘못 전송됩니까?

  • $ include_dot 의 의미를 이해합니까 (Dot이 dot과 함께 있어야 함)?

  • 팀이 .jpg / .jpeg 의 스타일을 통일 했습니까? 매핑이 효과적입니까?

  • 쓰기 기능이 감지 유형과 일치합니까 ( ImageJPeg vs ImagePng 등)?

  • 환경이 대상 형식 (Webp/AVIF와 같은 GD 기능)을 지원합니까?

  • .BMP.wbmp를 착각합니까?

  • $ _files [ 'type'] (클라이언트가 위조 될 수 있음)를 신뢰하지 않습니까?

7. 결론

image_type_to_extension () 자체는 매우 "정직한"것입니다. 소위 "오류 확장을 반환"하는 것은 대부분 입력이 imageType_* 가 아니기 때문에 팀의 기대치가 사양 ( .jpg vs.jpeg )과 일치하지 않거나 쓰기 링크가 감지 결과와 일치하지 않기 때문입니다.
경로를 정렬하면 " 올바르게 유형 가져 오기 → 별칭을 합리적으로 만듭니다 → 함수를 일치 "하면 확장 문제를 완전히 제거 할 수 있습니다.