使用PHP,我想检查上传的图像是jpg,gif,png还是svg格式。我发现exif_imagetype函数可以检查文件格式,但它不支持svg格式。有没有办法在PHP中检测svg格式?
答案 0 :(得分:5)
永远不要相信文件扩展名来识别文件格式,文件扩展名可能是错误的或更改的。使用mimetype 例如
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");
答案 1 :(得分:3)
要扩展Victors答案,您可以使用mime_content_type('/path/to/file');
(请参阅php.net manual for the function)并检查返回字符串是否等于image/svg+xml
。类似的东西:
public function isSvg($filePath = '/path/to/file')
{
return 'image/svg+xml' === mime_content_type($filePath);
}
答案 2 :(得分:1)
mime_content_type(realpath('img/logo.svg'));
返回"image/svg+xml"
。
您的svg文件必须在第一行包含<xml>
标签,如此处https://stackoverflow.com/a/46366819所述,类似于<?xml version="1.0" encoding="iso-8859-1"?>
答案 3 :(得分:0)
pathinfo($_FILES['File']['name'], PATHINFO_EXTENSION)
尽可能使用内置功能,和 仅提取所需信息(options = PATHINFO_EXTENSION)
答案 4 :(得分:0)
尝试这个-
$extensions= array("jpeg","jpg","png","svg","gif");
$file_ext = strtolower(end(explode('.',$file['name'])));
if(in_array($file_ext,$extensions)=== true){
...
...
}
答案 5 :(得分:0)
mime_content_type($filePath);
如果 svg 文件从 <svg xmlns="http://www.w3.org/2000/svg" width="210" height="80">
开始,请小心
我收到“文本/html”
答案 6 :(得分:-1)
您可以使用explode()
和end()
函数来获取此文件的扩展名:
$extention = end(explode('.', $name_of_file));
if ($extention == 'jpg' || $extention == 'svg' || $extention == 'png' || $extention == 'gif')
{
...
}
我希望它可以帮助你...