什么Perl模块将文件扩展名(.txt,.jpeg)转换为mime类型(text/plain,image/jpeg)?

0 perl module mime-types

什么Perl模块将文件扩展名(.txt,.jpeg)转换为mime类型(text/plain,image/jpeg)?

我想要

my $mime = file_to_mime ("some.txt");
# $mime = 'text/plain'
Run Code Online (Sandbox Code Playgroud)

van*_*sel 5

虽然davewood的答案是正确的,但它会做很多检查并使事情变得非常明确.MIME::Types开箱即用的东西!

无需拆分文件名即可解压缩文件扩展名.如果您提供带扩展名的文件名,它将自行提取.如果文本没有扩展名,那么它将使用该字符串作为扩展名.

use strict;
use warnings;

use MIME::Types; # by Mark Overmeer

my $filename = "some.txt";

my $MIME_Types = MIME::Types->new;

my $mimetype = $MIME_Types->mimeTypeOf($filename)
    or die "Could not find MIME type for '$filename'";

print "Filename '$filename' of MIME type '$mimetype'\n";
Run Code Online (Sandbox Code Playgroud)

注意:永远不要仅依赖于扩展,您可能会考虑File::Type内省文件本身或更新的模块File::MimeInfo::Magic.

  • @ChewyDragees您可以自由地将答案标记为正确与否,但提供的答案与您要求的完全一致.您请求将$ filename字符串转换为$ mimetype字符串的答案.我只是暗示:仅依靠扩展本身就很棘手,使用Magic的文件内省更安全(更广泛).File :: Type有很好的评论,因为它是如此多才多艺.意思是"不是很好"只是因为它可以快速简单地完成这项工作,并提供有关MIME类型的更多信息,如编码或是否是二进制文件.只是不同. (2认同)
  • 我和生气 - 这需要更多 - 我可能根本不会回应这样的情绪:-D - 但是给了'正确的答案'然后拉开失去了15个学分:-(没关系,享受美好的星期天下午 (2认同)