哪个Perl模块将文件扩展名(.txt,.jpeg)转换为mime类型(文本/纯文本、图像/jpeg)?
我想要
my $mime = file_to_mime ("some.txt");
# $mime = 'text/plain'
发布于 2014-04-03 08:39:57
虽然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";
注意:从不只依赖于扩展名,您可以考虑自省文件本身的File::Type
,或者最近的模块File::MimeInfo::Magic
。
发布于 2014-04-03 05:56:39
编辑: Th.J.的答案可能更好。(https://stackoverflow.com/a/22832209/1702521),但为了完整起见,我将保留我的编辑。
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/ say /;
use MIME::Types;
my $file = "foo.txt";
my $mime_types = MIME::Types->new( only_complete => 1 );
$mime_types->create_type_index;
my ($ext) = $file =~ /\.(.+?)$/;
die "Could not find file extension. (" . $file . ")"
unless defined $ext;
my $content_type = $mime_types->mimeTypeOf($ext);
die "No content-type found for '$ext'"
unless defined $content_type;
say $content_type;
https://stackoverflow.com/questions/22827465
复制相似问题