如何在PHP中获得 base64 编码字符串的文件扩展名?在我的例子中,这个文件恰好是一个 image:
$base64_encoded_string = $_POST['image_base64_string']; $extension = ??
我如何才能从$base64_encoded_string获得文件扩展名?
$base64_encoded_string
**编辑:**这不是上载表单得一部分,因此此处不能使用$_FILES数据.
$_FILES
64jmpszr1#
这对我很有效
function getBytesFromHexString($hexdata) { for($count = 0; $count < strlen($hexdata); $count+=2) $bytes[] = chr(hexdec(substr($hexdata, $count, 2))); return implode($bytes); } function getImageMimeType($imagedata) { $imagemimetypes = array( "jpeg" => "FFD8", "png" => "89504E470D0A1A0A", "gif" => "474946", "bmp" => "424D", "tiff" => "4949", "tiff" => "4D4D" ); foreach ($imagemimetypes as $mime => $hexbytes) { $bytes = getBytesFromHexString($hexbytes); if (substr($imagedata, 0, strlen($bytes)) == $bytes) return $mime; } return NULL; } $encoded_string = "...."; $imgdata = base64_decode($encoded_string); $mimetype = getImageMimeType($imgdata);
来源:https://newbedev.com/detecting-image-type-from-base64-string-in-php
ztigrdn82#
//This function return the extension from mimetype function getImageMimeType(string $encodedImage) { $decodedImage = base64_decode($encodedImage); return (explode('/', finfo_buffer(finfo_open(), $decodedImage, FILEINFO_MIME_TYPE))[1]); } $encodedImage = ' '; $extension = getImageMimeType($encodedImage); echo $extension;
x4shl7ld3#
下面是一句由**@msg的**答案启发而来的俏皮话:
$extension = explode('/', mime_content_type($base64_encoded_string))[1];
yeotifhr4#
如果这是上载表单的一部分,您可以从$_FILES variable获取有关文件的信息。如果它是一个原始字段,你可以解码它,并通过mime_content_type或等效的运行它,并采取猜测。如果您愿意使用库,则可以查看mimey或php-mimetyper。
mime_content_type
4条答案
按热度按时间64jmpszr1#
这对我很有效
来源:https://newbedev.com/detecting-image-type-from-base64-string-in-php
ztigrdn82#
x4shl7ld3#
下面是一句由**@msg的**答案启发而来的俏皮话:
yeotifhr4#
如果这是上载表单的一部分,您可以从$_FILES variable获取有关文件的信息。
如果它是一个原始字段,你可以解码它,并通过
mime_content_type
或等效的运行它,并采取猜测。如果您愿意使用库,则可以查看mimey或php-mimetyper。