正在查找图像MIME类型



在上传的图像保存到数据库之前,我很难获得该图像的MIME类型。我读过很多书和网页,但都找不到答案。

如何确定MIME类型?

这是我目前拥有的代码。我已经删除了确定MIME类型的各种尝试:

$upload_dir = HOST_WWW_ROOT . "uploads/movie_pics/";
$image_fieldname = "movie_pic";
// Name the file uniquely
$now = time();
while (file_exists($upload_filename = $upload_dir . $now .
                                 '-' .
                                 $_FILES[$image_fieldname]['name'])) {
$now++;
}
// Insert the image into the movies_images table
$image = $_FILES[$image_fieldname];
$movie_images_filename = $image['name'];
$movie_images_info = getimagesize($image['tmp_name']);
$finfo = finfo_open();
$movie_images_mime_type = finfo_file($finfo, $upload_filename, FILEINFO_MIME);
finfo_close($finfo);

$movie_images_size = $image['size'];
$movie_images_data = file_get_contents($image['tmp_name']);
$insert_image_sql = sprintf("INSERT INTO movies_images " .
            "(movie_images_filename, movie_images_mime_type, movie_images_file_size,  movie_images_data) " .
                        "VALUES ('%s', '%s', %d, '%s');",
                        mysql_real_escape_string($movie_images_filename),
                        mysql_real_escape_string($movie_images_mime_type),
                        mysql_real_escape_string($movie_images_size),
                        mysql_real_escape_string($movie_images_data));
mysql_query($insert_image_sql)

或死亡(mysql_error());

在finfo_file的手动页面中,示例将常量FILEINFO_MIME_TYPE传递给finfo_open,而不是finfo_file。

$finfo = finfo_open(FILEINFO_MIME);
$movie_images_mime_type = finfo_file($finfo, $upload_filename);

如果您确定只处理图像,则可以使用exif_imagetype()

下面的代码将把文件与特定的IMAGE类型进行比较。然后,它使用image_type_to_mime_type()使用$image_type中存储的图像类型来检索文件的mime类型。

示例1(从上面的链接中提取)

// if file is a GIF line below should return IMAGETYPE_GIF
$image_type = exif_imagetype('image.gif'); 
if ($image_type == IMAGETYPE_GIF) {
    $mime = image_type_to_mime_type(); // will produce "image/gif" as String.
    echo 'The picture is a gif, with a mime type of ' . $mime;
}

不要将mysql_*用于新代码

此外,建议不要再为新代码使用mysql_*函数,因为它已被弃用。我建议查看mysqli_*或MySQL查询的PDO形式。

相关内容

最新更新