我有一个没有扩展名的图像文件名(假设它是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 ......等等。
有可能做到以上几点吗?怎么样?
答案 0 :(得分:1)
$ext = substr(image_type_to_extension(exif_imagetype('dev.png')), 1); //example png
这将正确地为您提供扩展,并且比$_FILE['image']['type']
更可靠。
答案 1 :(得分: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];
答案 2 :(得分:0)
您可以直接使用FILEINFO_MIME来确定MIME类型,然后使用switch case添加扩展名。有这个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;
}
要获得更多扩展程序,请继续添加案例以进行切换。