2013-07-24 5 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
$ext = substr(image_type_to_extension(exif_imagetype('dev.png')), 1); //example png 

Это даст вам расширение правильно и является более надежным, чем $_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; 
} 

Для получения дополнительных расширений продолжайте добавлять случаи для переключения.

Смежные вопросы