アップロードされたファイルのコンテントタイプを取得する
アップロードされたファイルのコンテントタイプを取得するには、Mojo::Uploadクラスのheadersメソッドを使用し、Mojo::Headersオブジェクトを取得し、content_typeメソッドを呼び出します。
# アップロードされたファイルのコンテントタイプを取得する my $content_type = $upload->headers->content_type;
コンテントタイプと拡張子
一般的な画像のコンテントタイプとPDFの拡張子について記述しておきます。
PNG
# 拡張子 コンテントタイプ png image/png
JPEG
# 拡張子 コンテントタイプ jpeg image/jpeg jpg image/jpeg
GIF
# 拡張子 コンテントタイプ gif image/gif
# 拡張子 コンテントタイプ pdf application/pdf
コンテントタイプから拡張子を決定する
アップロードされたファイルを保存したい場合に、コンテントタイプの種類に応じて、ファイルの拡張性を作成したいという場合があると思います。そのようなロジックのサンプルをここに記述しておきます。正規表現を使って判定しています。
my $content_type = 'image/png';
my $ext;
# PNG
if ($content_type =~ m|\bimage/png\b|) {
$ext = 'png';
}
# JPEG
elsif ($content_type =~ m|\bimage/jpeg\b|) {
$ext = 'jpg';
}
# GIF
elsif ($content_type =~ m|\bimage/gif\b|) {
$ext = 'gif';
}
# PDF
elsif ($content_type =~ m|\bapplication/pdf\b|) {
$ext = 'pdf';
}
else {
# 予想していないコンテントタイプ
}
print "$ext\n";
Mojolicious入門