2013-07-24 3 views
0

확장자가없는 이미지 파일 이름이 있습니다 (이 파일은 image_file_name이라고 가정 할 수 있습니다). 확장명이 잘못되어 있음을 유의하십시오. 또한 파일 형식을 알고 있습니다 (파일 형식이 image/jpeg이라고 가정 할 수 있음). 이제는 주어진 유형의 파일 확장자를 반환하는 PHP 함수가 있습니까? 다음 의사 코드에서 설명하고있는 바와 같이 :파일 형식에서 파일 확장자 제안

$extension = get_extension('image/jpeg'); // Will return 'jpg' 

$file_name = 'image_file_name' . '.' . $extension; // Will result in $file_name = image_file_name.jpg 

이미지 위의 예에 불과 것을 유의하시기 바랍니다, 파일 이름은 웹 페이지의 파일 이름 또는 다른 것으로 모든 파일 유형이 될 수 있습니다. 확장 기능은 무엇이든 될 수 있습니다. html, css 등이 될 수 있습니다.

위 작업을 수행 할 수 있습니까? 그리고 어떻게?

답변

1

이렇게하면 확장자가 올바르게 표시되고 $_FILE['image']['type']보다 신뢰할 수 있습니다.

+0

나는 exat 솔루션을 사용하지 않았지만 아이디어를 수정했습니다. 고마워. – Greeso

0

finfo을 사용하여 mime-magic을 수행하여 파일 형식을 결정할 수 있습니다.

$finfo = finfo_open(FILEINFO_MIME, "/path/to/mimiemagic.file"); 
$res = $finfo->file($filename); 
list($type, $encoding) = explode(";", $res); 
$typeToExt = array(
    "image/jpeg"=>"jpg", 
    "image/png"=>"png", 
    "text/html"=>"html", 
    "text/plain"=>"txt", 
    "audio/mpeg"=>"mp3", 
    "video/mpeg"=>"mpg" 
); 

$ext = $typeToExt[$type]; 
0

FILEINFO_MIME을 직접 사용하여 MIME 형식을 결정한 다음 스위치 대/소문자를 사용하여 확장명을 추가 할 수 있습니다. 이 mime_content_type()이 있지만 더 이상 사용되지 않는 것 같습니다.

$finfo = new FileInfo(null, 'image_file_name'); 

// Determine the MIME type of the uploaded file 
switch ($finfo->file($_FILES['image']['tmp_name'], FILEINFO_MIME) { 
    case 'image/jpg': 
     $extension = 'jpg' 
     $file_name = 'image_file_name' . '.' . $extension; 
    break; 

    case 'image/png': 
     $extension = 'png' 
     $file_name = 'image_file_name' . '.' . $extension; 
    break; 

    case 'image/gif': 
     $extension = 'gif' 
     $file_name = 'image_file_name' . '.' . $extension; 
    break; 
} 

확장하려면 더 많은 사례를 전환하십시오.